Reputation: 905
This is my websocket server side code:
wss = new WebSocketServer({
server: server,
path: '/chat'
});
console.log('Web Socket Server is created');
wss.on('connection', function (ws, request) {
console.log('Connection is called');
…
});
wss.on('message', function (message) {
console.log('onMessage data: ' + message);
});
wss.on('close', function(code, reason) {
console.log('ws is closed with code: ' + code + ' reason: '+ reason);
});
This is my websocket client side code:
ws = new WebSocket("ws://{{host}}/chat");
ws.onopen = function () {
// Web Socket is connected, send data using send()
ws.send("Message to send");
console.log("Websocket is open...");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
console.log("Message is received: " + received_msg);
};
ws.onclose = function () {
// websocket is closed.
console.log("Connection is closed...");
};
I don't understand why in the browser when I see the console output is:
[Log] Websocket is open...
[Log] Connection is closed...
The connection goes straight to close after opening. On server side I only see "Connection is called" output.
I don't understand why the connecrtion is closed on client side and I don't understand why when the connection is closed by client, server side 'close' event is not triggered.
Upvotes: 0
Views: 1319
Reputation: 538
You are listening events 'message', 'close' on the wrong target. After creating a connection you should start listening messages from it:
wss = new WebSocketServer({
server: server,
path: '/chat'
});
console.log('Web Socket Server is created');
wss.on('connection', function (ws, request) {
console.log('Connection is called');
ws.on('open', function (message) {
console.log('ws connection opened!');
});
ws.on('message', function (message) {
console.log('onMessage data: ' + message);
});
ws.on('close', function(code, reason) {
console.log('ws is closed with code: ' + code + ' reason: '+ reason);
});
});
Upvotes: 1