我想实现一个Web浏览器客户端/后端服务器系统,使用socketio作为通信协议在Web客户端应用程序和服务器之间交换(二进制/语音)消息。
+----------------+ +------------------+
| | | |
+--+ | | | |
| | web browser | | | |
user 1 | +--------------> https | | |
| <--------------+ web server | | |
+--+ | for | | |
| static assets | | |
+--+ | | | |
| | web browser | | | cobot <--------+
user 2 | +--------------> +---> dialog +------+ |
| <--------------+ +---+ manager | | |
+--+ | websocket | | server | | |
| server | | logic | | |
| for audio / | | | | |
+--+ | video | | | | |
| | web browser | messages | | | | |
user N | +--------------> | | | | |
| <--------------+ | | | | |
+--+ | | | | | |
| | | | | |
+----------------+ +------------------+ | |
| |
也许有人可以将这种单播通信称为“单播”。服务器端,这是接收以下内容的Web服务器的通常行为来自某个客户的请求,并提供答复此请求的请求客户。
我对于使用socketio API实现所描述的场景感到困惑。如果我很了解,服务器可以使用默认的房间模式(例如emit-cheatsheet)以一对一的方式向连接的客户端发送一条消息:
// sending to individual socketid (private message)
socket.to(socketId).emit('messageType', 'message payload');
但是客户端如何仅向服务器节点发送消息(语音消息请求)(避免广播到所有客户端,这是许多聊天应用程序套接字示例的典型)?