通过websocket实现即时通讯
时间: 2023-10-15 14:04:35 浏览: 69
实现即时通讯的一种常用的方式是使用 WebSocket。WebSocket 是一种在客户端和服务器之间建立持久连接的技术,可以使得客户端和服务器之间进行双向通信。
下面是一个简单的 WebSocket 实现的示例:
1. 客户端代码:
```javascript
var socket = new WebSocket("ws://localhost:8080");
socket.onopen = function() {
console.log("连接已经建立");
};
socket.onmessage = function(event) {
console.log("接收到消息:", event.data);
};
socket.onerror = function(error) {
console.log("发生错误:", error);
};
socket.onclose = function(event) {
console.log("连接已经关闭");
};
function sendMessage(message) {
socket.send(message);
}
```
2. 服务器端代码:
```javascript
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function(ws) {
console.log('客户端已连接');
ws.on('message', function(message) {
console.log('接收到消息:', message);
ws.send('服务器已接收到消息:' + message);
});
ws.on('close', function() {
console.log('客户端已断开连接');
});
});
```
在上面的示例中,客户端使用 `WebSocket` 对象与服务器建立连接并实现了 `onopen`、`onmessage`、`onerror` 和 `onclose` 四个事件的处理函数。其中,`onopen` 事件表示连接已经建立,`onmessage` 事件表示接收到了服务器发送的消息,`onerror` 事件表示连接发生错误,`onclose` 事件表示连接已经关闭。客户端还实现了 `sendMessage` 函数,用于发送消息给服务器。
服务器端使用 `ws` 模块创建了一个 `WebSocket.Server` 对象,并监听了 `connection` 事件。当有客户端连接上来时,会触发 `connection` 事件,并在回调函数中实现了接收客户端发送的消息和发送消息给客户端的逻辑。
这只是 WebSocket 实现的一个简单示例,具体根据需求可以进行更加复杂的实现。
阅读全文