uNetworking / uWebSockets.js

μWebSockets for Node.js back-ends :metal:
Apache License 2.0
7.95k stars 570 forks source link

Server receives empty messages #996

Closed alexe100 closed 10 months ago

alexe100 commented 10 months ago

Hello, I am trying uWebSockets.js in ubuntu, node v18 and client can connect abut when client sends a message the message handler gets fired but message is always empty. Any help would be appreciated.

server:

` const uWS = require('./node_modules/uWebSockets.js/uws.js'); const port = 9001;

const app = uWS./SSL/App({

key_file_name: 'misc/key.pem',
cert_file_name: 'misc/cert.pem',
passphrase: '1234'

}).ws('/', { //Options compression: uWS.SHARED_COMPRESSOR, maxPayloadLength: 16 1024 * 1024, idleTimeout: 10, //Handlers open: (ws, req) => { console.log('A WebSocket connected!'); }, message: async (ws, message, isBinary) => { console.log("New message: "+message+" ("+JSON.stringify(message)+")") }, drain: (ws) => { console.log('WebSocket backpressure: ' + ws.getBufferedAmount()); }, close: (ws, code, message) => { console.log('WebSocket closed'); }

}).any('/*', (res, req) => { res.end('Nothing to see here!');

}).listen(port, (token) => { if (token) { console.log('Listening to port ' + port); } else { console.log('Failed to listen to port ' + port); } });`

Client:

` var WebSocketClient = require('websocket').client;

var client = new WebSocketClient();

client.on('connectFailed', function(error) { console.log('Connect Error: ' + error.toString()); });

client.on('connect', function(connection) { console.log('WebSocket Client Connected'); connection.sendUTF("Hello");

connection.on('error', function(error) 
{
    console.log("Connection Error: " + error.toString());
});
connection.on('close', function() 
{
    console.log('echo-protocol Connection Closed');
});
connection.on('message', function(message) 
{
    console.log(JSON.stringify(message))

});

});

client.connect('ws://localhost:9001/', 'echo-protocol');`

Runtime:

Listening to port 9001 A WebSocket connected! New message: [object ArrayBuffer] ({})

e3dio commented 10 months ago

message is ArrayBuffer, you need Buffer.from(message).toString() for string

alexe100 commented 10 months ago

Thank you!