如何搭建Socket.io用户之间的聊天系统?
How to build chat system between users with Socket.io?
我正在尝试在用户之间构建一个 message/chat 系统。
以下规则是消息系统的主要特点。
- 每个用户都可以向其他人发送消息,并且只接受一对一聊天。(这意味着只有两个用户可以共享消息)。如果有名为 A 到 Z 的用户,用户 A 可以向 B 到 Z 发送消息,但所有消息都是独立的,因此它就像一对一的聊天系统。 A、B、C不能在同一个消息框(聊天室)中进行对话。
- 消息应该实时 sent/received 这就是我决定使用 Socket.io
的原因
- 用户注销后,将保存消息历史记录,以便用户在 he/she 再次登录时可以看到它。
这就是我认为的工作方式。
当用户A登录时,服务器使用req Token中的唯一标识userId为用户A创建一个唯一的房间。因此,每个用户在登录时都会加入一个房间。
io.sockets.on('connection', function (socket) {
socket.on('join', function (data) {
socket.join(data.userId);
});
});
现在其他用户可以实时给用户A发送消息了。当然用户A也可以给特定用户发消息,实时获取消息。
io.sockets.in('userId').emit('msg', {msg: 'hi!'});
如果用户A想给用户B发送消息,但是用户B当前没有登录,也就是说用户B没有空间,那么用户A发送的消息保存在. txt 文件和文件路径保存在数据库中。
稍后当用户B勾选消息框时,用户B可以通过加载.txt文件查看所有消息历史。
所以,如果A和B都登录了就可以实时聊天,如果一个用户没有登录也可以是消息系统。
使用 Socket.io 是一个好的开始,但构建一个综合聊天应用程序需要大量工作。如果你想跳过从头开始构建一切的痛苦,你可以参考 Hyphenate SDK(iOS、Android 和 Web),它是基于套接字的实时通信。
Hyphenate 同时支持移动和Web SDK,具有丰富的功能和非常可靠的服务。它还提供开源 UI 组件,因此您无需从头构建所有内容。
我正在尝试在用户之间构建一个 message/chat 系统。
以下规则是消息系统的主要特点。
- 每个用户都可以向其他人发送消息,并且只接受一对一聊天。(这意味着只有两个用户可以共享消息)。如果有名为 A 到 Z 的用户,用户 A 可以向 B 到 Z 发送消息,但所有消息都是独立的,因此它就像一对一的聊天系统。 A、B、C不能在同一个消息框(聊天室)中进行对话。
- 消息应该实时 sent/received 这就是我决定使用 Socket.io 的原因
- 用户注销后,将保存消息历史记录,以便用户在 he/she 再次登录时可以看到它。
这就是我认为的工作方式。
当用户A登录时,服务器使用req Token中的唯一标识userId为用户A创建一个唯一的房间。因此,每个用户在登录时都会加入一个房间。
io.sockets.on('connection', function (socket) { socket.on('join', function (data) { socket.join(data.userId); }); });
现在其他用户可以实时给用户A发送消息了。当然用户A也可以给特定用户发消息,实时获取消息。
io.sockets.in('userId').emit('msg', {msg: 'hi!'});
如果用户A想给用户B发送消息,但是用户B当前没有登录,也就是说用户B没有空间,那么用户A发送的消息保存在. txt 文件和文件路径保存在数据库中。
稍后当用户B勾选消息框时,用户B可以通过加载.txt文件查看所有消息历史。
所以,如果A和B都登录了就可以实时聊天,如果一个用户没有登录也可以是消息系统。
使用 Socket.io 是一个好的开始,但构建一个综合聊天应用程序需要大量工作。如果你想跳过从头开始构建一切的痛苦,你可以参考 Hyphenate SDK(iOS、Android 和 Web),它是基于套接字的实时通信。
Hyphenate 同时支持移动和Web SDK,具有丰富的功能和非常可靠的服务。它还提供开源 UI 组件,因此您无需从头构建所有内容。