我想知道存在什么websocket事件到目前为止,我只使用ws.on('message')
事件,但我想使用一个在连接建立和关闭时触发的事件。我试着添加ws.on('connection')
,但没有触发。
app.ws('/', function (ws, req) {
ws.on('message', function (textChunk) {
//do stuff
}
});
});
我需要一些客户端编程来做到这一点吗?
我试着添加这个,但是当我从客户端连接时它没有触发。
ws.on('request', function () {
console.log("request");
});
提供给app.ws
的函数是在打开一个新的websocket时执行的函数。所以这样使用:
app.ws('/', function (ws, req) {
console.log("New connection has opened!");
ws.on('close', function() {
console.log('The connection was closed!');
});
ws.on('message', function (message) {
console.log('Message received: '+message);
});
});
查看express-ws
的源代码后,看起来您可以执行以下操作:
var express = require('express');
var app = express();
var expressWs = require('express-ws')(app);
// get the WebsocketServer instance with getWss()
// https://github.com/HenningM/express-ws/blob/5b5cf93bb378a0e6dbe6ab33313bb442b0c25868/index.js#L72-L74
expressWs.getWss().on('connection', function(ws) {
console.log('connection open');
});
// ... express middleware
// ... websocket middle ware
app.ws('/', function(ws, req) {
ws.on('message', function(msg) {
console.log(msg);
});
});
app.listen(3000);
<
老反应/h2>
有以下内容:
close
error
message
open
https://developer.mozilla.org/en-US/docs/Web/API/WebSocket属性
好了,我又发现了一个实际触发的事件。现在如果我能找到一个在打开连接时被调用一次的方法就好了。
app.ws('/', function (ws, req) {
ws.on('close', function() {
console.log('close connection');
});
ws.on('message', function (textChunk) {
//do stuff
}
});
});