📅  最后修改于: 2023-12-03 15:37:53.189000             🧑  作者: Mango
套接字是网络编程的基础,通过套接字可以实现不同计算机之间的通信。Javascript也提供了一些套接字相关的API,如WebSocket、XMLHttpRequest等。
在一些场景下,我们需要实现只向发送者发出消息的功能,比如在线聊天,我们希望A向B发出消息后,只有B能够接收到A发送的消息,而其他人不能接收到。
下面我们可以通过WebSocket来实现这个功能。
首先,我们需要在客户端创建一个WebSocket对象并建立连接。
const socket = new WebSocket('ws://localhost:8080');
socket.addEventListener('open', () => {
// 连接成功后,立即向服务端发送一个 'hello' 消息
socket.send('hello');
});
socket.addEventListener('message', (event) => {
console.log(`received message from server: ${event.data}`);
});
上面的代码建立了一个WebSocket连接,然后我们在连接成功后向服务端发送了一个 'hello' 消息。
在服务端,我们需要监听 WebSocket 连接并处理特定的消息,只将消息发送回发送者。
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
ws.send('welcome');
ws.on('message', (message) => {
console.log(`received message from client: ${message}`);
// 只将消息发送回发送者
ws.send(`you said: ${message}`);
});
});
上面的代码中,我们监听了WebSocket的连接请求,然后在连接成功后,向客户端发送了一个欢迎消息。在收到消息后,我们判断这条消息的发送者,并只将消息发送回发送者。
通过WebSocket,我们可以很方便地实现只向发送者发出消息的功能。但需要注意的是,WebSocket是基于 TCP 的,需要考虑网络连接的稳定性和错误处理。为了保证用户体验,我们需要在实现 WebSocket 应用时,考虑全面,并避免出现各种奇怪的错误。