socket.broadcast.to(newroom).emit('updatechat', 'SERVER', socket.username+' has joined this room');
クライアント側にヒットしていません。私はからのメッセージしか見ることができません:
socket.emit('updateActivity', 'SERVER', 'you have CONNECTED to '+ socketEntity.roomName);
私は何か間違ったことをしましたsocket.join()
か?
また、ブロードキャストイベントにの代わりに別の名前を付けようとしましたがupdateActivity
、どちらも機能しません。
ログ出力には、ブロードキャストの放出についてはまったく言及されていません。
質問の更新:
broadcast.to()を次のスニペットに置き換えると機能するという解決策を見つけました。
socket.get(socketEntity.roomId, function (error, room) {
io.sockets.in(room).emit('updateActivity', 'SERVER', 'you -joined- this group '+ socketEntity.roomName);
});
しかし、現時点でそれが当てはまる理由はわかりません...それで、どういうわけか、文字列と同じroom
上のio.sockets.in()のパラメーターですか?isn't
socketEntity.roomId
元のコード:
サーバ:
io.sockets.on ('connection', function (socket){
socket.on('joinRoom', function(socketEntity){
socket.join(socketEntity.roomId);
socket.emit('updateActivity', 'SERVER', 'you have CONNECTED to '+ socketEntity.roomName);
socket.broadcast.to(socketEntity.roomId).emit('updateActivity', 'SERVER', 'you -joined- this room'+ socketEntity.roomName);
});
});
クライアント:
HTML:<ul id="activityList" class="dropdown-menu"></ul>
JavaScript:
$(document).ready(function(){
var socketEntity = {roomId:sampleRmId, roomName: "sample room"}
socket.emit('joinRoom', socketEntity);
socket.on('updateActivity', function (username, data){
$('#activityList').prepend('<li><a href="#"><div>'+ data +'</div></a></li>');
});
})