Nodejs websocket server, http trigger



我有一个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);

我的 websocket 客户端在浏览器点击 url 时没有收到消息。如果我在没有连接客户端的情况下多次访问该站点,然后连接客户端,则每次访问一次发送 1 条消息。

如何使用浏览器 url 访问来触发 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);

socket.io 有一个很好的例子,你可能不得不改变一些东西。

http://coenraets.org/blog/2012/10/real-time-web-analytics-with-node-js-and-socket-io/

相关内容

  • 没有找到相关文章

最新更新