这是我的 websocket 服务器端代码:
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);
});
这是我的 websocket 客户端代码:
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...");
};
我不明白为什么在浏览器中当我看到控制台输出是:
[Log] Websocket is open...
[Log] Connection is closed...
连接打开后直接关闭。在服务器端我只看到 “连接被调用”输出。
我不明白为什么客户端关闭连接,也不明白为什么当客户端关闭连接时,服务器端“关闭”事件不会被触发。
您在错误的目标上监听事件“消息”、“关闭”。 创建连接后,您应该开始监听来自它的消息:
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);
});
});