我正在构建一个多人卡片游戏,在客户端使用Flex,在服务器端使用Java,我想知道我是否必须使用套接字和accept方法才能将用户连接到服务器以便他们使用加入游戏室或创建一个或聊天。 在过去,我已经学会了如何构建一个双方都是JAVA并且连接在套接字中的游戏服务器,但现在客户端将在FLEX中,几乎没有办法连接到Java服务器(XML,SOAP,BLAZEDS( AMF))我发现很难理解如何编写Java服务器以完成游戏服务器的所有功能,特别是管理房间并将数据发送回用户。 在套接字方式中,当用户连接到服务器并且他已经打开了一个房间时,这个房间在一个线程上打开,谁曾经加入那个房间然后他连接到同一个线程并将消息发送到正确的地方很容易,所以问题是要了解如何使用SOAP或BLAZEDS做同样的事情。 任何帮助,将不胜感激。 感谢。
答案 0 :(得分:1)
请简化您的问题,很难知道要求的是什么。
如果你问socket和webservice之间的区别,套接字用于管理基本的网络通信。通过它们,您可以以您选择的任何格式/协议接收/发送字节。
SOAP / Webservices只是其中一种格式,它的优点是它是一种标准的消息编码方式,因此您可以轻松编写在大多数平台上连接到您的服务的代码,并且这些消息是人类可读的。主要的缺点是性能,包括带宽和处理能力(特别是在接收端解析)。
如果您要开始,我建议您设计与您正在使用的应用程序相关的格式,以简化操作。
答案 1 :(得分:1)
查看RED5和remoteSharedObjects。使用这种技术,您基本上可以将“游戏”对象放在远程共享对象中,并且所有客户端将具有实时更新的相同对象。然后,您可以使用AMF(BlazeDS背后的协议)来处理动态较少的数据。
答案 2 :(得分:0)
使用原始套接字可以获得控制权。控制协议格式(消息数据的结构)。因此,您可以根据应用程序要求调整消息传递,使其更安全,更快速或更强大。所有这些控制都是以复杂性和维护为代价的。因为您可以准确地说出要发送的内容以及如何发送它,所以您需要编写和调试更多代码。原始套接字通信的另一个问题是它被防火墙阻止的可能性大大增加。
使用Web服务消除了决定消息格式的一些复杂性(这是它的主要好处)。您不必担心字节字符串,字符串编码或数据转换(尽可能多)。因为这样的Web服务在异构客户端和服务器之间的数据通信方面确实擅长,其中互操作性是关键。成本是序列化/反序列化相对复杂,因此比二进制消息格式慢。当您必须与您无法控制的客户端应用程序(不是您的情况)进行通信时,Web服务很好用。传统上,Web服务通过HTTP进行隧道传输,因此还有一个额外的优势就是可以更少地担心阻止访问游戏的防火墙。
BlazeDS试图跨越两个世界 - 它为您提供了Web服务的一些强大功能(回退通信选项,防火墙互操作性等),但使用它自己的二进制格式进行序列化/反序列化。这使它具有使用原始套接字的一些速度,而没有很多缺点。我认为这是一个很好的探索者,但如果你发现自己需要更快的速度,那么原始套接字就值得一试。
祝你好运。答案 3 :(得分:0)
套接字是OSI Level 4传输层的编程接口。每个人都使用它们,即Webservices是一个隐藏较低级别的7级应用层接口。
如果您需要在客户端和服务器之间进行实时双向数据交换,那么最好管理自己的TCP套接字。 Flex仍然支持套接字。