websocket聊天室架构上的疑问

初学websocket,

对于这段代码有些不理解,websocket是用于客户端-服务器的异步通信方法,但是代码中一直是wsh.send(messgae),我的理解就是一直是客户端在发送消息,请问正确的理解应该是什么呢?wss的回调函数传入的wh又是什么呢?

const WebSocket = require('ws');
const WebSocketServer = WebSocket.Server;
let count = 0;
const wss = new WebSocketServer({port: 3000});
let wsh = new WebSocket('ws://localhost:3000/ws/chat');
wsh.on('open', function () {
    console.log(`[CLIENT] open()`);
    wsh.send('Hello!');
});
wss.on('connection', function (wh) {
    console.log('wh:-'+wh.path);
    console.log(`[SERVER] connection() 有websocket请求接入啦`);
    wh.on('message', function (message) {
        console.log(`[SERVER] Received: ${message}`);
        setTimeout(() => {
            wh.send(`What's your name?`, (err) => {
                if (err) {
                    console.log(`[SERVER] error: ${err}`);
                }
            });
        }, 1000);
    })
});

wsh.on('message', function (message) {
    console.log(`[CLIENT] Received: ${message}`);
    count++;
    if (count > 3) {
        wsh.send('Goodbye!');
        wsh.close();
    } else {
        setTimeout(() => {
            wsh.send(`Hello, I'm Mr No.${count}!`);
        }, 1000);
    }
});
阅读 2.9k
2 个回答

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信——允许服务器主动发送信息给客户端。 你可以理解一下WebSocket实现原理是怎么样的,wsh.send(messgae)只是一个方法的载体,而真正发送的message是服务器之前的通信来完成。----个人理解轻喷~

重点在这

wsh.on('message', function (message) {})

只有前面收到了后面发过来的mssage,才会触发sends

wh是在socker服务实例化的时候传入的操作句柄!类似于mouse Event里的Event

$(selector).on(eventType, bindSelector, function(Event) {

})

wss.on('connection', function (wh) {

})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题