faye-websocket 的使用

1. 安装

npm install faye-websocket

2. 创建文件 server.js,内容如下

var WebSocket = require('faye-websocket'),
    http      = require('http');

var server = http.createServer();

server.on('upgrade', function(request, socket, body) {
  if (WebSocket.isWebSocket(request)) {
    var ws = new WebSocket(request, socket, body);
    console.log("request come...");
    ws.on('message', function(event) {
        console.log("message receive...")
        ws.send(event.data);
    });
    
    ws.on('close', function(event) {
        console.log('close', event.code, event.reason);
        ws = null;
    });
    
    setInterval(() => {ws.send("data");}, 2000); // 定时器,每间隔 2s 发送一个 "data"
  }
});

server.listen(8000);
console.log("server start...")

3. 运行该服务

执行 node server.js

4. 编写客户端

在 Chrome 浏览器的 console 里,执行

ws = new WebSocket("ws://localhost:8000");
ws.onmessage = function(event) { alert(event.data); };

5. 结果

可以观察到


image.png

客户端每间隔 2s,收到一个 data。

6. 总结

感觉就是两边的 ws 是对应的,都可以通过 send 方法发送数据,然后在 onmessage 回调里面接收数据。

开始我理解成,如果我再在浏览器中创建一个 WebSocket,连接上服务器之后,向服务器发送数据,然后服务器会把数据转发给前一个客户端。实验了一下,前一个并没有接受到数据。其实从 server.js 中的代码也可以看到很清楚,每一个 request 创建了一个 WebSocket 与之对应。

你可能感兴趣的:(faye-websocket 的使用)