【发布时间】:2017-10-24 12:21:54
【问题描述】:
我有一个允许多人连接到聊天室的聊天应用程序,当新客户连接到聊天室时,我希望能够向他们显示聊天历史记录,我已经完成了他的发布聊天历史记录,但显然这会更新聊天中的每个人,从而导致重复消息。
我将如何挑选出新用户并向他们显示聊天内容?
这是服务器代码
socket.on('chat history', function(){
console.log("Chat History");
posts.find({chatId: chatId}).then(function(chatHistory){
console.log("Chat history", chatHistory);
socket.emit('chat history', chatHistory);
})
});
这是客户端代码
socket.on('chat history', function(chatHistory){
for (var key in chatHistory) {
var obj = chatHistory[key];
addChatMessage(obj);
}
});
我正在使用 socketio 示例,数据正在发送回此方法,并且添加聊天消息会更新每个人。
【问题讨论】:
-
服务器端,通过单个套接字 (
socket.emit('chat history')) 发射,而不是房间中的所有套接字 (io.to('some room').emit('chat history'))。 -
@JeremyThille 嗨,你能告诉我这个更详细吗?
-
好吧,没有更多细节了。你有一个人
socket,然后你用它来向一个特定的人发送你的信息:socket.emit("chat history", data)。我不知道怎么说更好:)io.on( "connection", function(socket){ socket.emit("chat history", someData); }) -
@JeremyThille 嘿,当我使用 socket.emit("chat history", data) 时,它会更新聊天中的每个人。
-
为什么要在服务器端监听聊天记录?服务器将聊天记录发送到客户端,它永远不会接收它。
标签: javascript sockets socket.io