基于node实现websocket通信

前端之家收集整理的这篇文章主要介绍了基于node实现websocket通信前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

小程序中需要用到webSocket通信,为了方便自己调试,于是弄了个node环境来做测试。

一、客户端

webSocket客户端的使用还是蛮简单的,

var ws = new WebSocket('ws://127.0.0.1:3000');
ws.onopen = function() {
    console.log('open');
}
ws.onmessage = function(data) {
    console.log(data);
}

实例化WebSocket后,为实例绑定事件就可以了,当然还有其他的事件,我这就不列举了,只用open和message了。

下面看下node的代码

二、socket.io

socket.io听过得比较早,但一直没有机会使用,于是第一个便想到他,npm install下。

增加后端代码,在不妨碍理解的基础上进行了代码删减:

const io = require('socket.io')();
io.on('connection',function(client) {
    console.log('connected');
});
io.listen(3000);

powershell下用node启动该服务,同样的,用http-server工具启动,打开 http://127.0.0.1:8080/ws.html。

发现控制台下报错了,提示Connection closed before receiving a handshake response。

《基于node实现websocket通信》

好吧,这儿被卡了好久,后来发现原因是websocket版本的问题,我们看下控制台的network,

《基于node实现websocket通信》

发现websocket对应的是13版本,而socket.io支持的版本是4版本,故存在问题。而websocket版本详细可以查看:websocket版本

有问题,怎么处理呢?继续看下一个ws库。

三、ws

ws是一个node的webSocket库,在readme中说明了他是支持13版本的websocket协议的。

直接上代码,启服务,

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3000 });
wss.on('connection',function(ws) {
    console.log('connected');
    ws.on('message',function(message) {
        console.log('received: %s',message);
    });
    ws.send('something');
});

刷新下ws.html,控制台上有打印了,这下可以使用了。

四、总结

讲完了,发现微信下没讲?不,微信下是一样的,微信的websocket也是13版本的,问题和处理方法都是一样的,没用微信的例子是因为想看下普通pc下的效果,发现一致的,就直接拿来当例子了。

demo下载地址:基于node实现websocket通信

原文链接:https://www.f2er.com/nodejs/454297.html

猜你在找的Node.js相关文章