我已经做了很多这类系统的工作。如果我是你,我会已经设置好一个http端点来处理这种情况。在游戏中使用http post/get是一个可怕的想法,但在用户界面中并不糟糕。您可以每5秒轮询一次,或者让服务器告诉客户端何时再次询问。
您还可以使用UDP来发送ping以确定客户端是否连接,而不是陷入TCP的泥潭(虽然它感觉非常安全,但不要让那些头发愚弄了您)。这样做的好处是开销比http post/gets小得多,缺点是分片和顺序(当然,如果您有一个适当的状态机,则顺序并不重要)。
因此,考虑到所有这些因素,以下是我的建议,使用http(同样可以使用udp进行一些调整,但我将使用http,因为这样我就不必涉及分段问题)。
使用托管{插入框架(WCF、WebAPI、aspx页面、甚至php)}的IIS服务器。
为了简化生活,创建一个包装器类,其中包含您需要的每个可能的api调用。
我想您想要的调用可能是这样的(->表示到服务器,<-表示从get/post的http响应)。
1 -> Hello(玩家数据。这是一个初始的竞技场握手)
1 R.1. <- Welcome(如果服务器喜欢玩家,这告诉他们他们被接受了)
1 R.2. <- Error(这个玩家因为下流行为而被禁止,没有游戏给你)
2 -> FindMatch(匹配开始查找,只要他们说“Hello”,这是询问服务器是否已经找到任何东西。您还可以捆绑统计信息,如“预计等待时间”等。这充当ping以检查客户端是否仍然活着。对此的响应将作为ping向用户发送,告诉他们他们仍然连接到服务器。您也可以实现单独的“ping”调用,这取决于您)
2 R.1 <- NothingYet(我们什么都没找到,冷静等待)
2 R.2 <- GotOne(我们找到了一个匹配项。此时,您将告诉客户端是否应启动服务器或连接。)
3 -> Leave(向匹配制度挥手告别)
希望这有所帮助。就像我说的,您也可以使用UDP完成相同的工作。但是从经验来看,我真的不会进入TCP。