Node와 Socket.io를 사용하여 간단한 배열을 전달하려고하는데 아무것도 얻지 못했습니다. 내가 놓친 게 무엇입니까?

제이슨 니콜스

net tuts 튜토리얼따라 소켓과 노드를 사용하여 간단한 채팅 애플리케이션을 구축했고, 이제 사람들이 제가 작성한 게임을 플레이 할 수 있도록 앱을 확장하려고합니다. 그래서 사람들이 사용 가능한 게임을 나열하도록하고 싶습니다. 하지만 서버에서 클라이언트로 간단한 테스트 배열조차 통과하지 못하는 것 같습니다.

코드가 스스로를 말하도록하겠습니다.

관련 서버 코드 :

var games = ["test"];
io.sockets.on('connection', function (socket) {
  socket.emit('message', { message: 'welcome to the chat' });
  socket.on('gameList', function (data) {
    io.sockets.emit("games",games);
  });
  socket.on('send', function (data) {
    io.sockets.emit('message', data);
  });
});

고객 입장에서:

window.games = [];
$("#listGames").click(function(){
  socket.emit("gameList", function(data){
    window.games = data;
  })
})

그래서 나는 버튼 클릭 전후에 게임을 console.log하고 그것은 항상 빈 배열입니다. 내 머리에 문자열을 포함해야합니다 "test".

그래서 내가 어디로 잘못 갔습니까?

참고 : 튜토리얼에서 놓친 jQuery를 코드베이스에 추가했습니다.

헥사 시안화물

socket.emit()데이터 수신을 시도하는 데을 (를) 사용 하고 있습니다. 그것은 데이터를 서버로만 보냅니다. games그에 따라 이벤트를 처리하려면 클라이언트에 이벤트 핸들러 가 필요합니다 .

window.games = [];

$("#listGames").click(function() {
  socket.emit('gameList');
});

socket.on('games', function (games) {
  window.games = games;
});

에 대한 이벤트 핸들러 는 서버 측에서 games실행할 때 발생하는 것 io.sockets.emit('games', games);입니다.

또한 항상 Socket.IO를 통한 응답으로 객체를 전달해야합니다. 서버 측 코드를 : var games=[];에서 var games={'games':[]};또는 이와 유사한 것으로 변경하십시오 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관