2012-10-16 3 views
0

클라이언트 (client1)가 데이터를 서버로 보내고 서버가 다른 클라이언트 (client2)로 동일한 데이터를 보내는 nodejs의 네임 스페이스를 사용하여 앱을 개발했습니다. 페이지를 새로 고칠 때만 데이터가 client2에 렌더링된다는 것을 제외하면 모든 것이 정상적으로 작동합니다. 데이터를 동적으로 업데이트하는 방법은 무엇입니까? 서버 ::nodejs 서버 출력에 따라 클라이언트 HTML 페이지를 업데이트하는 방법은 무엇입니까?

var io = require('socket.io').listen(8007); 
    var chat = io 
     .of('/chat') 
     .on('connection', function (socket) { 
     socket.on('message', function(message){ 
     console.log("Received message:: " + message + " - from client " + socket.id); 
      var news = io 
      .of('/news') 
      .on('connection', function (socket1) { 
      socket1.send("received::" + message + " - from client " + socket.id); 
      }); 
    }); 
    }); 

과 CLIENT1이다 ::

<script> 
var count=0; 
function connect() { 
    var chat = io.connect('http://localhost:8007/chat'); 
    chat.send('chat message:::' + count); 
    count++; 
    } 
</script> 

는 수신 클라이언트 존재 ::

<script> 
    var news = io.connect('http://localhost:8007/news'); 
    news.on('message', function(data){ 
    document.getElementById('message').innerHTML = "\n Server says: " + data; 
    }); 
</script> 

답변

1

나는 문제를 생각 :

코드는 다음과 같습니다 서버에 있습니다. "채팅"에 연결될 때까지는 "뉴스"청취자를 설정하지 않습니다. 다음과 같이 귀하의 서버 코드를 변경합니다

var io = require('socket.io').listen(8007); 
var newsSocket; 
var news = io 
    .of('/news') 
    .on('connection', function (socket1) { 
     newsSocket = socket1; 
    }); 
var chat = io 
    .of('/chat') 
    .on('connection', function (socket) { 
     socket.on('message', function(message){ 
     console.log("Received message:: " + message + " - from client " + socket.id); 
     for(var i=0; i<newsSockets.length; i++) { 
      newsSocket.send("received::" + message + " - from client " + socket.id); 
     } 
    }); 

참고 :이 내용은 연결된 마지막 클라이언트로 뉴스 메시지를 보내드립니다. 뉴스 연결 모음 (배열)이 있어야합니다. 연결을 해제 할 때도 제거해야합니다.

관련 문제