我是websockets/socket.io/node.js的新手。我正在尝试编写一款纸牌游戏应用程序,但几乎所有我找到的示例教程都创建了聊天应用程序。所以我正在努力让自己的头脑对这些概念感兴趣,以及如何将它们应用到我的纸牌游戏中。我无法绕过websockets(通过socket.io和node.js)
保持简单,纸牌游戏将涉及两名球员。游戏涉及在桌子周围移动牌。每个玩家都必须看到其他玩家的移动(因此需要不断的连接)。但是对手牌被隐藏到另一个。
因此,两个人浏览到同一张桌子,然后点击坐下(并且在两个座位被拿走时玩)。使用
io.on("connection", function(sock){
//socket events in here
});
我在创建一个套接字(“IO”,或“袜子”?),这两个客户端和服务器共享,或者是两个独立的插座(服务器/客户端A和服务器/ clientB)?我问,因为我很难理解发送和/或广播消息时发生了什么。如果客户端发出消息,那么该消息是发送给服务器还是其他客户端,还是仅仅发送给服务器?然后,它还会将信息发送给自己吗?似乎这就是逻辑......或“广播”方法的目的是什么?
从功能角度来看,我需要服务器向每个玩家发送不同的消息。所以它不像服务器将聊天发送给每个人的聊天室。但是如果它是我们三个人共享的一个套接字(客户端和服务器),我该如何管理谁看到了什么?我已经阅读了关于命名空间的内容,但我正在努力研究如何使用它。如果它是两个独立的套接字,那么我可以更容易地想象将不同的数据发送到单独的客户端。但是,这是如何实现的 - 是两个'io'对象还是两个'sock'对象?
最后,我不知道这是否是在这里被接受的那种冗长的问题,所以如果不是这样,那么有人可以指引我参加讨论可以发生的论坛吗?干杯!
(万一它很重要我也使用Expressjs作为服务器)。
编辑补充: 我的困惑的一部分是关于'io'和'袜子'之间的区别。此代码例如,从socket.io页面是被应用到其中任何的方法一个很好的例子:
io.on('connection', function(socket){
socket.emit('request', /* */); // emit an event to the socket
io.emit('broadcast', /* */); // emit an event to all connected sockets
socket.on('reply', function(){ /* */ }); // listen to the event
});
我可以建议你分割你的问题分成一套小的问题。然后继续前进。 – Lazyexpert
步骤很好。这是摆脱我的整体大局。我不明白当涉及多方的'连接'发生时究竟发生了什么。我会自己测试一下,但我不确定这是否会从同一个客户端(但不同的浏览器)工作,是吗? – erv
连接这个'sock' - 是用户和服务器之间的套接字对象。你可以玩它来达到你的结果。也看看房间。 – Lazyexpert