2011-04-18 51 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