2011-08-19 73 views
2

好吧,過去幾天我試圖把我的國際象棋服務器項目的計劃放在桌子上。它計劃由幾個互相交互的Web服務組成。 Web服務計劃使用Java語言製作,並使用Axis2 1.6.0 Web服務引擎部署到Apache Tomcat 7.0.20上。Java Web服務可以從Apache Tomcat向客戶端發送通知嗎?

到目前爲止,會有這將是已知的客戶端應用程序只適用於Web服務的身份驗證Web服務,玩家池Web服務,驗證Web服務和「經營業務邏輯的Web服務。所有的客戶請求將通過這項服務完成並分別轉發。

所有玩家移動必須通過招,因爲驗證,歷史等方面的Web服務。當其他玩家需要被告知對手玩過移動時發生問題。持續的客戶請求(發現是對手打出的動作)對於服務是無可爭議的,因爲當對手進行他的移動時,玩家轉換必須是立即執行的。如何使用java web服務和eralier提到的技術來實現這一點?是否有可能通過網絡服務聯繫反對玩家並告知他關於對手的舉動?有沒有另外一種方法可以用這種技術來做到這一點?

編輯:客戶端應用程序計劃爲桌面應用程序,可能是Java或C#。

回答

0

你不說出你的客戶端技術(瀏覽器?桌面應用程序?)

反正沒有直接的解決辦法,如果你在家庭用戶。要與家庭用戶合作,您需要他們打開/ NAT將需要的端口連接到他們的計算機,以便訪問他們的PC。這對普通家庭用戶來說非常複雜。

對於瀏覽器,因爲它們是客戶,而不是服務器則更加複雜。也許有的框架可能被用來模擬一個瀏覽器中的服務器(我認爲至少有一個,但我不記得它的名字),但將努力像剛纔直到做出改變重複到服務器的AJAX調用。

而在去年,如果你正在檢查的服務器每秒,這將是即使對於「快速棋」足夠低的等待時間。爲Tomcat到web瀏覽器推送通信

+0

每隔一秒鐘檢查一次服務器可能會導致對遊戲玩法可能致命的副作用。例如,如果服務負荷很重,響應可能會過度延遲,並且播放器時鐘將不會同步太多。 – snijele

+0

是的,這是一個需要微調的問題。但是,從一個大巴來說,這是你所能做的一切(甚至Comet依靠瀏覽器進行連續的請求,即使通過一些機制來緩解)。作爲服務器的完整桌面應用程序會引發配置問題(NAT /防火牆),並且可能是客戶客戶端中的一個額外安全漏洞。 – SJuan76

2

一種選擇是Comet(有時稱爲的cometdBayeaux)。

從wiki文章:

彗星是一個Web應用程序模型,其中一個長期持有的HTTP請求允許web服務器推送數據到瀏覽器,而瀏覽器明確要求它。

(注:重點煤礦)

這意味着服務器可以通知掛起的更改客戶端無需瀏覽器專門投票。憑藉良好的JavaScript框架(如Dojothis jQuery plugin),可以無縫地與通過輪詢舊的瀏覽器。

學習更多關於彗星有一些很好的鏈接:

希望這有助於。

+0

感謝您的回覆,我會檢查一下 – snijele

相關問題