Сообщение комнаты не отображается с Socket.io & Express - PullRequest
0 голосов
/ 08 октября 2018

index.js

socket.on('join room', function(data) {
		var msg = "<span style='color:darkgreen;'>" + data.user + " has joined chat.</span>";
		socket.to(data.room).emit('system message', msg);
});
index.html

$(function() {
  socket.on('system message', function(msg) {
        $('#messages').append($('<div class="systemMessage">').html(msg));
        var height = $("#messages")[0].scrollHeight;
        $.mobile.silentScroll(height);
  });
});
$( document ).on( "pageshow", "#channel", function ( e ) {
		var socket = io();
		if (getCookie("username") == "null") {
			$( ":mobile-pagecontainer" ).pagecontainer( "change", "#login-page", {
				transition: "pop"
			} );
		}
		else {
			socket.emit('join room', { room: getCookie("currentRoom"), user: getCookie("username") });
			$("#enter-sound").get(0).play();
		}
});

Таким образом, по какой-либо причине при смене каналов не отображается «системное сообщение», которое отправляется, когда пользователь присоединяется к новому каналу через «присоединенную комнату».Выдает & системное сообщение. У кого-нибудь есть мысли о том, почему это может быть? Я поместил туда отладчик в стиле предупреждений, и он не показывает предупреждение javascript при запуске системного сообщения socket.on.

1 Ответ

0 голосов
/ 08 октября 2018

Я обнаружил, что io.in(data.room) не принято, потому что data.room это объект javascript, а не строка.поэтому я просто добавил, и это сработало:

var room = data.room;
room = room.toString();
...