Node.js WebSocket服务器,HTTP触发器

阿什·克拉克

我有一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Node.js HTTP服务器

在Node.js上的相同地址上服务WebSocket和HTTP服务器

基于Node.js的服务器与类似Apache HTTP服务器的服务器

在Websocket服务器Node.js上阻止DDOS

Node.js HTTP服务器路由

Node JS作为HTTP服务器并托管angularJS SPA

node.js http服务器并发问题

调用node.js服务器

从Node JS服务器读取响应

使用Node JS的肥皂服务器

Node.JS服务器崩溃

崩溃服务器 node.js

Node.js WebSocket服务器缓冲区问题

Express Node js Webssockets正在从Websocket服务器接收消息,但无法发送消息

如何创建sockjs(SockJS-WebSocket仿真)或Shoe独立服务器(node.js)?

Node.js Websocket服务器似乎对其ip感到困惑

从C#程序连接基于node.js的socket.io WebSocket服务器

遍历Node.js + Websocket服务器上的游戏对象?

如何使Node.js websocket socket.io服务器对DoS更具弹性?

Node.js服务器的哪个Websocket库最适合iOS客户端?

Node.js错误:意外的服务器响应:301-在Namecheap Webhost上运行Node.js Websocket服务器

从服务器(`node.js`)而不是从客户端触发`socket.io`事件

为什么Node.js简单的HTTP服务器应用程序无法在服务器上运行?

node.js服务器和带有express.js的HTTP / 2(2.0)

HAPI JS Node js创建https服务器

启动node.js Express服务器即服务

Next.js 中具有输入事件触发器的无服务器

客户端无法连接到Azure应用服务上托管的Node.js Websocket服务器吗?

setInterval是否会阻止/干扰node.js / express HTTP服务器?