我有一个http / websocket nodejs服务器。我想使用访问URL的动作来触发将websocket发送到其他套接字客户端。
var WebSocketServer = require('ws').Server
var wss = new WebSocketServer({port: 8081});
var http = require("http");
var sys = require("sys");
var server = http.createServer(function(request,response){
response.writeHeader(200, {"Content-Type": "text/plain"});
response.write("Hello");
if (request.url == "/"){
sys.puts("hit site")
wss.on('connection', function(ws){
sys.puts("sent msg");
ws.send("photo plox");
});
}
response.end();
}).listen(8000);
当浏览器访问URL时,我的websocket客户端未收到该消息。如果我在没有连接客户端的情况下多次访问该站点,然后又连接了该客户端,则每次访问一次都会发送1条消息。
如何使用浏览器网址访问触发websocket发送?
问题是您没有正确管理与WebSocketServer的连接。在您的代码中,仅在收到HTTP请求之后才监听连接。尝试这样的事情:
var WebSocketServer = require('ws').Server
var wss = new WebSocketServer({port: 8081});
var http = require("http");
var sys = require("sys");
var server = http.createServer(function(request,response){
response.writeHeader(200, {"Content-Type": "text/plain"});
response.write("Hello");
if (request.url == "/"){
for (var i = 0; i < wss.client.length; i++) {
var ws = wss.clients[i];
sys.puts("sent msg");
ws.send("photo plox");
}
}
response.end();
}).listen(8000);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句