diff --git a/lib/protocol.js b/lib/protocol.js index 3293312..fd62da3 100644 --- a/lib/protocol.js +++ b/lib/protocol.js @@ -2,6 +2,7 @@ var assert = require('assert'); var util = require('util'); var STRING_MAX_LENGTH = 240; +var SRV_STRING_MAX_LENGTH = 32767; var packets = { 0x00: [ @@ -22,9 +23,14 @@ var packets = { { name: "serverHost", type: "string" }, { name: "serverPort", type: "int" } ], - 0x03: [ - { name: "message", type: "string" } - ], + 0x03: { + toServer: [ + { name: "message", type: "string" } + ], + toClient: [ + { name: "message", type: "ustring" } + ] + }, 0x04: [ { name: "age", type: "long" }, { name: "time", type: "long" } @@ -517,6 +523,7 @@ var types = { 'byte': [readByte, writeByte, 1], 'ubyte': [readUByte, writeUByte, 1], 'string': [readString, writeString, sizeOfString], + 'ustring': [readString, writeString, sizeOfUString], 'byteArray16': [readByteArray16, writeByteArray16, sizeOfByteArray16], 'bool': [readBool, writeBool, 1], 'double': [readDouble, writeDouble, 8], @@ -1270,6 +1277,11 @@ function sizeOfString(value) { return 2 + 2 * value.length; } +function sizeOfUString(value) { + assert.ok(value.length < SRV_STRING_MAX_LENGTH, "string greater than max length"); + return 2 + 2 * value.length; +} + function writeString(value, buffer, offset) { buffer.writeInt16BE(value.length, offset); offset += 2;