WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。在WebSocket API中,浏览器和服务器只需要要做一个握手(handshaking)的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
WebSocket是一个通信的协议,分为服务器和客户端。服务器放在后台,保持与客户端的长连接,完成双方通信的任务。客户端一般都是实现在支持HTML5浏览器核心中,通过提供JavascriptAPI使用网页可以建立websocket连接。Java实现的案例,请参考:Java现实WebSocket
为什么用Nodejs?
1. 事件驱动,通过闭包很容易实现客户端的生命活期。
2. 不用担心多线程,锁,并行计算的问题
3. V8引擎速度非常快
4. 对于游戏来说,写一遍游戏逻辑代码,前端后端通用。
当然Nodejs也有一些缺点:
1. nodejs更新很快,可能会出现版本联兼容
2. nodejs还不算成熟,还没有大制作。
3. nodejs不像其他的服务器,对于不同的连接,不支持进程和线程操作。
在权衡Nodejs给我们带来无限畅快的开发的同时,要考虑到他的不成熟,特别是对于“长连接”的网络通信应用。下面我将分别,测试一下网上几种Nodejs实现websocket的框架。
下面通过三种方式给大家介绍nodejs创建WebSocket监听的方式,具体内容如下所示:
第一种,nodejs原生自带的
//引用net库的方式
const net = require('net'); const server = net.createServer((socket)=>{ socket.on("connect",(data)=>{ console.log("connect"); }) }); server.listen("8111","127.0.0.1")
第二种:
//js的原生方式
const WebSocketServer = require("ws").Server; var ws = new WebSocketServer({ host: webConfig.ip, port: webConfig.port }) io.on('connection', function (socket) { socket.on("close", function () { console.log("server close"); }); socket.on("error", function (err) { console.log("server error " + err); }); socket.on("message", function (cmd, data) { console.log("server rcv data=" + cmd); socket.send(data); }); });
第三种:
//使用外部socket.io库的方式
const io = require('socket.io')(webConfig.port); io.sockets.on('connection', function (socket) { socket.on('getSysConf', function (data) { console.log("get sys config "); }); });
总结
到此这篇关于NodeJS多种创建WebSocket监听的方式的文章就介绍到这了,更多相关nodejs创建WebSocket监听内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!
- 本文固定链接: https://zxbcw.cn/post/188011/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)