📌  相关文章
📜  套接字仅向发送者发出 - Javascript (1)

📅  最后修改于: 2023-12-03 15:37:53.189000             🧑  作者: Mango

套接字仅向发送者发出 - Javascript

套接字是网络编程的基础,通过套接字可以实现不同计算机之间的通信。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 应用时,考虑全面,并避免出现各种奇怪的错误。