Skip to content

Commit 34ebcae

Browse files
committed
refactor: always parse inbound messages as strings
1 parent dcaf1fd commit 34ebcae

File tree

3 files changed

+11
-12
lines changed

3 files changed

+11
-12
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ Emitted when the underlying WebSocket has disconnected. If the client is configu
398398
#### Event: 'message'
399399

400400
* `event` {Object}
401-
* `buffer` {Buffer} - The message payload.
401+
* `message` {Buffer|String} - The message payload.
402402
* `outbound` {Boolean} - This will be `true` if the message originated locally.
403403

404404
Emitted whenever a message is sent or received over client's WebSocket. Useful for logging or debugging.

lib/client.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,15 +164,15 @@ class RPCClient extends EventEmitter {
164164

165165
/**
166166
* Send a message to the RPCServer. While socket is connecting, the message is queued and send when open.
167-
* @param {Buffer|String} buffer - String to send via websocket
167+
* @param {Buffer|String} message - String to send via websocket
168168
*/
169-
sendRaw(buffer) {
169+
sendRaw(message) {
170170
if ([OPEN, CLOSING].includes(this._state) && this._ws) {
171171
// can send while closing so long as websocket doesn't mind
172-
this._ws.send(buffer);
173-
this.emit('message', {buffer, outbound: true});
172+
this._ws.send(message);
173+
this.emit('message', {message, outbound: true});
174174
} else if (this._state === CONNECTING) {
175-
this._outboundMsgBuffer.push(buffer);
175+
this._outboundMsgBuffer.push(message);
176176
} else {
177177
throw Error(`Cannot send message in this state`);
178178
}
@@ -561,17 +561,16 @@ class RPCClient extends EventEmitter {
561561
}
562562

563563
_onMessage(buffer) {
564-
this.emit('message', {buffer, outbound: false});
564+
const message = buffer.toString('utf8');
565+
this.emit('message', {message, outbound: false});
565566

566567
let msgId = '-1';
567568
let messageType;
568569

569570
try {
570-
const msg = buffer.toString('utf8');
571-
572571
let payload;
573572
try {
574-
payload = JSON.parse(msg);
573+
payload = JSON.parse(message);
575574
} catch (err) {
576575
throw createRPCError("RpcFrameworkError", "Message must be a JSON structure", {});
577576
}

test/client.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ describe('RPCClient', function(){
196196
const messages = [];
197197
await cli.connect();
198198
cli.on('message', m => messages.push({
199-
payload: JSON.parse(m.buffer.toString('utf8')),
199+
payload: JSON.parse(m.message.toString('utf8')),
200200
outbound: m.outbound,
201201
}));
202202
await cli.call('Echo', {val: 123});
@@ -235,7 +235,7 @@ describe('RPCClient', function(){
235235
const messages = [];
236236
await cli.connect();
237237
cli.on('message', m => messages.push({
238-
payload: JSON.parse(m.buffer.toString('utf8')),
238+
payload: JSON.parse(m.message.toString('utf8')),
239239
outbound: m.outbound,
240240
}));
241241

0 commit comments

Comments
 (0)