在Node.js中,可以使用ws
库来实现WebSocket服务器端。以下是一个简单的例子,展示了如何使用ws
创建一个WebSocket服务器,并在PC端(如浏览器)和小程序端之间实现实时通信。
首先,安装ws
库:
npm install ws
然后,创建一个简单的WebSocket服务器:
// 引入WebSocket库
const WebSocket = require('ws');
// 创建WebSocket服务器监听端口3000
const wss = new WebSocket.Server({ port: 3000 });
wss.on('connection', function connection(ws) {
// 当WebSocket连接建立时触发
ws.on('message', function incoming(message) {
// 当服务器接收到消息时触发
console.log('received: %s', message);
// 将接收到的消息发送回小程序端
ws.send(`Echo: ${message}`, (err) => {
if (err) {
console.error('Error sending message: ', err);
}
});
});
// 当WebSocket连接关闭时触发
ws.on('close', function close() {
console.log('Connection closed');
});
});
console.log('WebSocket server is running on ws://localhost:3000');
在PC端(如浏览器),可以通过WebSocket协议连接到上述服务器:
const ws = new WebSocket('ws://localhost:3000');
ws.onopen = function(event) {
console.log('WebSocket connected');
};
ws.onclose = function(event) {
console.log('WebSocket disconnected');
};
ws.onmessage = function(event) {
console.log('Received message:', event.data);
};
ws.onerror = function(error) {
console.error('WebSocket error observed:', error);
};
document.getElementById('send-button').addEventListener('click', function() {
const message = document.getElementById('message-input').value;
ws.send(message);
});
在小程序端,可以使用微信小程序的WebSocket API进行连接:
const ws = wx.connectSocket({
url: 'ws://localhost:3000',
});
ws.onOpen(function(res) {
console.log('WebSocket connected');
});
ws.onClose(function(res) {
console.log('WebSocket disconnected');
});
ws.onMessage(function(res) {
console.log('Received message:', res.data);
});
ws.onError(function(error) {
console.error('WebSocket error observed:', error);
});
Page({
sendMessage: function() {
const message = 'Hello, Server!';
ws.send({
data: message,
success: function() {
console.log('Message sent:', message);
},
fail: function() {
console.error('Failed to send message');
},
});
},
});
确保你的Node.js服务器和小程序端的WebSocket请求是在同一网络环境下,并且服务器端口没有被防火墙阻挡。这样,你就可以实现PC端和小程序端的实时通信了。