我必须构建一个客户机/服务器应用程序,其中服务器端只是一个将数据从一个客户机传递到另一个客户机的应用程序。
客户端将用C#编写,如果可能的话,我想用NodeJS编写服务器。我会尽力解释这背后的想法。
如果您将此应用程序视为1vs1游戏,最好对此进行解释。因此,多个客户端可以连接到异步
服务器。在Player1/Player2上下文中,一个客户端将与另一个客户端匹配。
Player1可以移动。例如,一个POCO
将被转换成JSON
格式。然后它将被发送到服务器,服务器应该知道它应该把数据发送给哪个对手(Player2)。然后作为回报,Player2可以移动,然后新的数据将通过服务器发送回Player1。
因此服务器需要有一个所有连接的玩家/客户端的列表。因此,它可以跟踪玩家与谁的比赛,以及他们的分数等。基本上,这是一个无状态的环境。
我一直在考虑用C#编写SocketAsyncEventArgs
类的服务器。但是由于NodeJS/Socket. IO已经是一个优化的库,如果我能这样做,那将节省时间。
我只是想知道是否有可能在NodeJS中实现这一点。还是应该继续使用C#server?
好吧,
我认为,如果您在C#端使用SocketIO4Net. Client之类的东西来打开与node.js服务器的连接,这是可能的。
来自文档:
SocketIO4Net。客户端可以与套接字交互。IO实例的方式与套接字非常相似。IO JavaScript客户端。该项目旨在填补Socket的JavaScript客户端和C#客户端之间的空白。IO,并保留非常相似的应用程序体验。
为了在服务器上存储玩家列表等,这很容易。将javascript对象定义为players
,在这里添加连接的客户端,并使用例如socket。id
作为标识符。
// Players currently at server
var players = {};
通常通过监听socketconnection
事件来实现,例如:
... somewhere in your code ...
var io = require('socket.io').listen(httpServer);
... somewhere in your code ...
// run on new client connection..
io.sockets.on("connection", function (socket) {
// adding to list of players you have in your server
// Player can be your own declared class as you like it to be
players[socket.id] = new Player({
nickname: "playerNameExample"
});
});
然而,如果你的游戏更像是匹配制作1VS1,那么值得考虑的是,你总是把你的单独的游戏伙伴添加到服务器中的不同房间。因此,信息交换只在相关参与者之间进行。见插座。io房间
至于资源,下一步该去哪里:最好的选择是只谷歌“socket.io多人游戏”,这将给出各种各样的结果。就像这样:如果你是一个全新的node.js用node.js谷歌你好世界的人,最好先做。
注意:如果您不了解基本知识,也没有尝试过使用node编程。js你还没准备好做一个多人游戏,一步一步地前进。!(是的,我现在按照你的指示从游戏的角度来看这个问题,但游戏的行为也可以应用到许多应用程序中)。干杯
本文向大家介绍jQuery 更改checkbox的状态,无效的解决方法,包括了jQuery 更改checkbox的状态,无效的解决方法的使用技巧和注意事项,需要的朋友参考一下 今天写页面遇到复选框动态全选或全不选问题,正常写法如下: but!第一次点击全选按钮input显示对勾,第二次就不行了,查了下有建议用prop的,亲测有效。那两者有啥区别呢? jQuery函数attr()和prop()的区别
在nodeJS应用程序中,我希望通过其UNIX套接字。我用这个包裹https://mongodb.github.io/node-mongodb-native/?jmp=docs(版本3.1.6),通过这种方式: 此处的文档中引用了URI:https://docs.mongodb.com/manual/reference/connection-string/#unix-域套接字。但在我的例子中,它失
我正在尝试在nexus 5(Android 6)和谷歌眼镜之间建立连接。要连接的客户端代码: 服务器端代码: 以https://github.com/vicmns/BluetoothGlass为参照。我面临的问题是,在accept()返回后,连接立即断开,并出现以下错误: 02-15 16:20:42.769 2163-2414/?e/Bt _ btif _ sock _ RFCOMM:find
编写一个iocp控制台服务器并不容易,套接字池和线程池都工作得很好,但是过了一段时间,服务器就不能再连接了,虽然没有什么问题发生,为什么呢?我用procexp_16.05.1446001339.exe检查进程属性,发现有很多close_wait状态,过了一段时间close_wait状态消失了,但是服务器还是不能连接,这是为什么呢?又该如何修复呢?
我有用于订票状态ejb。我想实现一个功能,如果用户选择了票,但没有支付他们,这是为他持有特定的时间,比如10分钟。因此,我实现了当用户提交票证选择时,它们将从可用票证数据库中删除。现在,我需要设置一个计时器,在超时时,它将检查是否支付了(这可能通过数据库),如果没有-将返回这些票证到数据库。 我会在ejb for tickets订单中这样做,但它是有状态的,并且EJBTimer服务不支持有状态be
异常跟踪: “”java.lang.IllegalStateException:在org.apache.catalina.core.applicationDispatcher.doForward(applicationDispatcher.java:328)在org.apache.catalina.core.applicationDispatcher.doForward(applicationDi