使用Node和Socket.io我想通过一个简单的数组,我什么都没有。 我错过了什么?
我跟着net tuts教程用socket和node构build了一个简单的聊天应用程序,现在我试图扩展应用程序,让人们玩我写的游戏,所以我想让人们列出可用的游戏,但我似乎无法通过从服务器到客户端的简单testing数组。
我会让代码自己说话:
相关的服务器代码:
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游戏之前和之后的button点击,它总是只是一个空的数组,当在我的脑海,它应该包含string"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);
时会触发的io.sockets.emit('games', games);
在服务器端。
还要确保始终通过Socket.IO传递一个对象作为响应。 更改服务器端代码: var games=[];
var games={'games':[]};
或类似的东西。