首先,让我们来了解一下WebSocket。WebSocket是一种协议。它提供了双向通信通道,允许客户端和服务器之间实时进行交互。而node.js是一种服务器端JavaScript开发框架,支持WebSocket协议。
要在Node.js中使用WebSocket,我们可以使用第三方模块ws。下面是一个简单的示例代码,它在Node.js中使用WebSocket实现了双向通信:
引入WebSocket模块
const WebSocket = require('ws');
创建WebSocket服务器,监听本地3000端口
const wss = new WebSocket.Server({ port: 3000 });
监听WebSocket连接事件
wss.on('connection', function connection(ws) {
# 监听WebSocket消息事件
ws.on('message', function incoming(message) {
console.log('received: %s', message);
# 收到消息后,发送一个响应
ws.send('Hello, got your message: ' + message);
});
# 发送一个消息给客户端
ws.send('Hello, I am the WebSocket server!');
});
在上面的代码中,我们创建了一个WebSocket服务器,监听本地端口3000。然后,我们监听WebSocket连接事件,当有客户端连接到服务器时,我们会创建一个WebSocket实例(也就是ws参数),并注册一个消息事件处理函数。在收到客户端的消息后,我们会发送一条响应消息。
下面是一个使用WebSocket的示例:一个在线聊天室。在这个示例中,我们会扩展上面的代码,让用户能够在网页上输入内容,并实时在聊天室中显示出来。
引入WebSocket模块
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3000 });
监听WebSocket连接事件
wss.on('connection', function connection(ws) {
# 监听WebSocket消息事件
ws.on('message', function incoming(message) {
console.log('received: %s', message);
# 遍历所有已连接的WebSocket实例,发送消息
wss.clients.forEach(function each(client) {
if (client !== ws && client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
});
# 发送一个消息给客户端
ws.send('Hello, I am the WebSocket server!');
});
在上面的代码中,我们新增了一个消息遍历事件处理函数,它会遍历所有当前连接到服务器的WebSocket实例,并向它们发送最新的消息。
使用WebSocket实现双向通信的过程类似于HTTP,不过WebSocket会建立单一长连接,可以无限发送消息,而不用每次都建立新的连接。对于需要实时更新内容的应用,例如在线聊天室、股票报价等,WebSocket是一个非常有用的协议。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:websocket结合node.js实现双向通信的示例代码 - Python技术站