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] 삭제
몇 마디 만하겠습니다