2013-08-12 4 views
2

작동하지 브로드 캐스트 나는 다음과 같은 코드를 가지고 :Socket.io는

var room = "1"; 
var chat = io.connect("localhost:3700/"); 
    self.chat = chat; 
    chat.on("connection", function(socket){ 
     socket.emit("room", room); 
     socket.on('message', function (data) { 
      self.receiveMessage(data); 
     }); 
    }); 

chat.broadcast.to(room).emit('send',"HEllo"); 

receiveMessage :

Uncaught TypeError: Cannot call method 'to' of undefined

나는 무엇 이니 라인 chat.broadcast.to(room).emit('send',"HEllo"); 나에게 오류를 제공

receiveMessage: function(data){ 

     var $elem = $("#chat1"); 
     var $content = $elem.find(".messageText"); 
     if(data.message) { 
      messages.push(data); 
      var html = ''; 
      for(var i=0; i<messages.length; i++) { 
       html += '<b>' + (messages[i].username ? messages[i].username : 'Server') + ': </b>'; 
       html += messages[i].message + '<br />'; 
      } 
      $content.html(html); 
     } else { 
      console.log("There is a problem:", data); 
     } 
    } 

잘못하고있는거야?

답변

3

잘 모르겠지만 연결을 통해서만 브로드 캐스트를 보낼 수 있다고 생각합니다.

이 작업을 시도 할 수 있습니다 : 물론

var room = "1"; 
var chat = io.connect("localhost:3700/"); 
    self.chat = chat; 
    chat.on("connection", function(socket){ 
     socket.emit("room", room); 
     socket.on('message', function (data) { 
      self.receiveMessage(data); 
     }); 


     chat.broadcast.to(room).emit('send',"HEllo"); 
    }); 

당신은 별도의 핸들러에서 브로드 캐스트를 보낼 수있는, 즉 :

var room = "1"; 
var chat = io.connect("localhost:3700/"); 
    self.chat = chat; 
    chat.on("connection", function(socket){ 
     socket.emit("room", room); 
     socket.on('message', function (data) { 
      self.receiveMessage(data); 
     }); 

     socket.on('foo event', function(data) { 
      chat.broadcast.to(room).emit('send',"HEllo"); 
     } 
    }); 
+0

는 어떻게 다음 event' 프로그래밍 방식'foo에 전화를합니까? 소켓에 익숙하지 않아 약간 혼란 스럽습니다.) – rickyduck

+0

그리고 사실 - 'connection' 함수는 결코 트리거되지 않습니다. – rickyduck

+1

@rickyduck socket.emit ('foo event ', data); 'foo-event'를 부를 것이다. – sachin

관련 문제