2011-04-18 39 views
0

我将首先描述我想实现的功能,然后我认为我的技术问题是。Web服务器与多个持久进程交谈

功能:我想为IGS(Internet Go Server)创建一个HTML/JavaScript客户端。它类似于FICS(免费Internet国际象棋服务器),通过telnet完成播放,所有图形客户端只是围绕原始协议进行包装。我的目标是能够在不添加任何网页浏览器(无Java,Flash等)的情况下播放。

技术问题:我看到的最大问题是服务器端。为了开始游戏,Web服务器必须打开IGS的持久套接字,并使用它来发送和接收数据。 (每个玩家都需要一个新的连接。)这与web开发中使用的CGI思维模式截然不同。

我想到的一个解决方案是Web服务器为每个将管理套接字并通过数据库与Web服务器通信的播放器分配一个进程。这听起来不太吸引人(间接,投票,呃......)。因此我的问题是:这个问题的标准解决方案是什么?

回答

1

检出Socket.IOjava version)用于通过http在客户端和服务器之间发送消息。您需要某种message bus来沟通客户之间的移动。

+0

如果我理解正确,这意味着浏览器必须运行Java?如果是,那么这正是我*不想做的事情。 – 2011-04-18 16:59:02

+0

对不起,没有。 Socket.IO可以使用各种方法并回退到支持的功能。可能的传输是WebSocket,Adobe Flash Socket,AJAX长轮询,AJAX多部分流,Forever Iframe, JSONP轮询。如果WebSocket或Flash未启用,则应该使用ajax长轮询。 – 2011-04-18 20:27:19

+0

D'oh,我点击了你的所有链接,但最重要的一个:-)仍然是,socket.IO在浏览器和Web服务器之间通信时工作正确吗?我不能只是打开一个任意服务器的套接字(除非它支持socket.IO的传输模型,而IGS则不支持)。但是,看起来我可以将与真实套接字交谈的进程分离到IGS,并且使用socket.IO传递给浏览器,完全跳过Web服务器(除了进程分叉)。这是你的意思吗? – 2011-04-18 21:14:30