Javascript 存在哪些Express websocket事件?
我想知道到目前为止存在哪些websocket事件,我只使用了Javascript 存在哪些Express websocket事件?,javascript,node.js,express,websocket,Javascript,Node.js,Express,Websocket,我想知道到目前为止存在哪些websocket事件,我只使用了ws.on('message')事件,但我想使用在建立和关闭连接时触发的事件。我尝试添加ws.on('connection'),但没有被触发 我的代码: app.ws('/', function (ws, req) { ws.on('message', function (textChunk) { //do stuff } }); }); 我需要一些客户端编程来完成这项工作吗 我
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('/', function (ws, req) {
ws.on('close', function() {
console.log('close connection');
});
ws.on('message', function (textChunk) {
//do stuff
}
});
});
查看了
expressws
的源代码后,您似乎可以执行以下操作
var express=require('express');
var-app=express();
var expressWs=require('express-ws')(应用程序);
//使用getWss()获取WebsocketServer实例
// https://github.com/HenningM/express-ws/blob/5b5cf93bb378a0e6dbe6ab33313bb442b0c25868/index.js#L72-L74
expressWs.getWss().on('connection',function(ws){
console.log(“连接打开”);
});
// ... 快速中间件
// ... websocket中间件
app.ws('/',函数(ws,req){
ws.on('message',函数(msg){
控制台日志(msg);
});
});
app.listen(3000)代码>提供给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);
});
});
我想你需要做一些谷歌的工作。一切都在等着你去发现,包括。我为webSocket的东西找到了一个有用的起点。至于node.js文档,它通常不是很完整。我经常不得不依赖其他信息来源。我认为您需要处理ws.on(“请求”)。express ws库截取连接事件并引发另一个事件。jfriend00我阅读了文档,但我不确定如何处理它。。。我不介意阅读,但您有更具体的问题吗?请更改此问题的标题,以便完全清楚此问题是关于ExpressWS(通常不是WebSocket)ws.on('open',function(){console.log(“open”);});当我将它添加到代码中时,它没有触发。为什么?在查看了express ws中的代码之后,它看起来像是自己处理连接。我已经更新了我的回复。它说getWss和ws未定义:/很难说没有完全看到你的代码,你正在做var expressWs=require('express-ws')(app)
与您的app.ws()
在同一个文件中?如果您正在执行我上面所说的操作,但仍然无法访问getWss(),那么您可能使用的是旧版本。