Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 存在哪些Express websocket事件?_Javascript_Node.js_Express_Websocket - Fatal编程技术网

Javascript 存在哪些Express 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 } }); }); 我需要一些客户端编程来完成这项工作吗 我

我想知道到目前为止存在哪些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('/', 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(),那么您可能使用的是旧版本。