假设我们在HTML中有3个按钮,但具有相同的ID
<button id="id1"> John </button>
<button id="id1"> Peter </button>
<button id="id1"> williams </button>
这是我的socket.io脚本(客户端)
$(document).on("click", "id1", function() {
var ButtonText = $(this).text();
var logged_in_userName ="i am using this application";
var currentRoom = logged_in_userName + "-" + ButtonText;
var reverseRoom = ButtonText + "-" + logged_in_userName;
//event to set room and join.
socket.emit('set-room', {
name1: currentRoom,
name2: reverseRoom
});
});
服务器端脚本
socket.on('set-room', function (room) {
//setting room and join.
setRoom = function (roomId) {
socket.room = roomId;
socket.join(socket.room);
};
});
我的场景是:
如果我单击按钮1,则需要对john执行socket.join(),对其他按钮也执行相同操作,并使用其各自的名称
发布于 2018-07-02 09:53:29
现在还不完全清楚您希望加入的房间名称是什么,但您做错了几件事。首先,您在事件处理程序中定义了一个函数,但从未调用过该函数。那么,您没有正确地访问与set-room
消息一起发送的数据。
如果reverseRoom
属性是您希望新加入的房间的属性,则将您的服务器代码更改为:
socket.on('set-room', function (data) {
// since socket.room only stores one room name, I assume you want to leave
// any prior room before overwriting that property
if (socket.room) {
socket.leave(socket.room);
}
socket.join(data.reverseRoom);
socket.room = data.reverseRoom;
});
https://stackoverflow.com/questions/51125236
复制相似问题