我目前在socketio中有一个系统,可以为个人消息创建空间:
null:java.lang.UnsupportedOperationException: requires a TFIDFSimilarity (such as ClassicSimilarity)
if / else语句基本上按字母顺序创建房间名(person1-person2),以防止双方加入房间时出现混淆。如果插座尚未插入,则插座将加入此房间。当服务器收到"聊天消息"时,全部触发。我已经确认插座房加入部分有效。但是,我似乎没有在客户端收到消息:
4.406719 = idf, computed as log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5))
我没有收到警报"已收到消息"当我发送消息时为什么是这样?为什么我没有收到服务器的消息?谢谢!
编辑:
这是我的客户端#loading {
position: relative;
}
#loading img {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
}
:
socket.on("chat message", function(msg) {
var roomname;
if (msg.recipient > msg.sender) {
roomname = msg.sender + "-" + msg.recipient;
}
else {
roomname = msg.recipient + "-" + msg.sender;
}
if(!io.sockets.adapter.sids[users[msg.sender]][roomname]) {
socket.join(roomname);
}
var clients = io.sockets.adapter.rooms[roomname].sockets;
console.log(clients);
io.in(roomname).emit("chat message", msg);
});
答案 0 :(得分:1)
分析代码后(OP通过聊天提供完整代码)我发现了问题。
您在客户端有多个socket.io连接,每个var socket = io();
创建一个新连接和一个新的套接字ID。
您使用以下代码加入了会议室:
var socket = io();
$("#form-send-message").submit(function () {
var messageDetails = {
sender: "<%=currentUser.username%>",
recipient: $(this).find("textarea").val(),
message: $(this).find(".chat-message-input").val()
}
socket.emit("chat message", messageDetails);
$(".chat-message-input").val("");
return false;
});
然后你希望服务器的io.in(room).emit
进入"chat message"
监听器,当你覆盖套接字并创建一个新连接时,新的套接字永远不会进入房间。
var socket = io(); //A new connection, a complete different socket
//This socket never joined the room
socket.on("chat message", function(msg) {
alert("received message");
console.log(msg.message);
if (msg[message] != "") {
$(".chat-history-div").append($("<li>").text(msg.message));
}
});
您应该只有1个单一连接。
所以要解决你的问题:
var socket = io();
$("#form-send-message").submit(function () {
var messageDetails = {
sender: "<%=currentUser.username%>",
recipient: $(this).find("textarea").val(),
message: $(this).find(".chat-message-input").val()
}
socket.emit("chat message", messageDetails);
$(".chat-message-input").val("");
return false;
});
socket.on("chat message", function(msg) {
alert("received message");
console.log(msg[message]);
if (msg[message] != "") {
$(".chat-history-div").append($("<li>").text(msg.message));
}
});