前面我们了解了什么是websocket,下面用nodejs简单的搭建一个websocket服务器,我们使用nodejs-websocket这个npm包,看代码:
代码语言:javascript复制var ws = require('nodejs-websocket');
var server = ws.createServer(function(socket){
// 事件名称为text(读取字符串时,就叫做text),读取客户端传来的字符串
var count = 1;
socket.on('text', function(str) {
// 在控制台输出前端传来的消息
console.log(str);
//向前端回复消息
socket.sendText('服务器端收到客户端端发来的消息了!' count );
});
}).listen(3000);
阅读源码,引入nodejs-websocket赋值给ws,调用ws对象上的createServer方法,创建websocket服务器。
createServer传递的参数为一个函数,这个函数的参数是一个socket对象,通过这个对象可以可前端进行信息交互了,我们用socket监听text事件,并用sendText返回文本信息。
客户端代码:
代码语言:javascript复制<script>
// 打开一个 web socket 这里端口号和上面监听的需一致
var ws = new WebSocket('ws://localhost:3000/');
// Web Socket 已连接上,使用 send() 方法发送数据
ws.onopen = function() {
// 这里用一个延时器模拟事件
setInterval(function() {
ws.send('客户端消息');
},2000);
}
// 这里接受服务器端发过来的消息
ws.onmessage = function(e) {
console.log(e.data)
}
</script>
客户端代码我们使用原生的websocket来实现,首先new一个websocket对象,参数为ws地址,指向我们的websocket服务器。
然后监听open事件和messge事件。
创建websocket服务器的nodejs库有不少,其原理都如上文一样,不过封装之后使用更加简便。