2013-04-15 29 views
14

我正在嘗試創建一些基本的簡單遊戲實現(tic tac toe是開始的項目),它可以在不需要中央服務器的情況下通過互聯網播放。該頁面甚至不需要託管,可以在本地運行,也可以託管在Web服務器上。當託管遊戲時,頁面會通知主機他的IP地址,然後可以通過任何方法(電話,即時消息等)將其發送給朋友。該朋友可以將IP輸入或複製/粘貼到加入對話框中,並可以玩有問題的遊戲。我希望這兩方能夠在不安裝任何附加軟件的情況下做到這一點,並且不需要聯繫任何類型的中央服務器。如何以最小的開銷實現簡單的無服務器p2p瀏覽器瀏覽器消息傳遞?

我已經研究了很多涉及node.js,webrtc,websockets,flash,java等的潛在解決方案。其中每個解決方案都有與之相關的問題,例如需要中央服務器或需要客戶端必須下載他們計算機上尚未安裝的東西,或者只傳輸音頻和視頻,而不能用於發送數據信息。告訴某人他們需要下載java ..或者讓我用flash開發應用程序可能看起來微不足道,但這完全違背了我的最終目標。

如果它只是不可能做我想完全用javascript做的事情,那麼它是不可能的。但我不明白爲什麼它不可能,因爲瀏覽器可以自己發送和接收文本數據到解析爲IP或直接到IP的URL。其他解決方案是受歡迎的,但如果這是不可能的話,那應該是。

的什麼,我試圖做具體要求簡單的解釋是:

  1. 應該使用完全免費的(如啤酒)的技術。 (沒有閃光燈,我意識到Flash Player的網絡應用程序可以免費編碼,但是階層中的點對點需要註冊一個測試版密鑰,假設我可以免費獲得該密鑰,則永遠不會保持自由。)

  2. 沒有外部服務器或虛假的點對點。 (再次在閃存或基於統一的解決方案,其中點對點的模仿可以,只要你使用他們的中央服務器來達到的)

  3. 無需客戶端下載(肯定的是,大多數人都java或flash安裝,但許多不要,java是一個非常大的下載,不適合計算機不識字的用戶,它甚至會嘗試安裝工具欄,最重要的是,我的很多用戶不會願意下載任何東西,包括java或unity 。掌握與這個項目已經提到)

總之,如果AJAX可以發送請求到指定的IP,然後等待響應自己的問題。爲什麼我不能得到簡單的對同行在純js的消息?或者我可以嗎?

我不需要託管一個完整的Web服務器或一個單獨的應用程序或任何類型的插件來發送和接收數據。

我錯過了什麼嗎?

+0

可能的重複[如何創建一個沒有任何服務器的P2P網絡聊天?](http://stackoverflow.com/questions/2463665/how-create-a-p2p-web-chat-without-any-server) –

+0

沒有重複。 [WebRTC](https://en.wikipedia.org/wiki/WebRTC)的存在改變了這個問題的含義。 – Wolf

回答

11

在推薦了pubnub之後,我看了一下,並留下了深刻的印象。然而,我最終偶然發現了我正在尋找的UNBELIEVABLY。 RTCDataChannel就是答案。 This site終於表明,我想要的是可能的。瀏覽器對這一功能的支持雖然很小,但正在不斷增長,整個考驗都強化了我對瀏覽器社區對等應用程序日益增長的支持的信心。

+1

PubNub還提供了一個WebRTC信號庫。如果你不想建立你自己的信令服務器,這可能會有幫助。你可以在這裏找到它:https://github.com/pubnub/webrtc(完整免責聲明我在PubNub上工作並構建了它們的WebRTC庫) – sharpper

+0

[瀏覽器支持](http://caniuse.com/#search=rtc) – mpen

0

總之,如果AJAX可以發送請求到指定的IP,並聽取 的迴應。爲什麼我不能得到簡單的點對點純 JS短信?或者我可以嗎?

這是由於ajax請求必須由HTTP服務器處理,所以您仍然需要爲每個客戶端安裝服務器。

說你要

  1. 免費
  2. 沒有外部服務器
  3. 沒有客戶端下載

我會說這是不可能與所有的這些要求進行歸檔,除了你砍一個的關閉。

我的建議是pubnub。這個解決方案仍然需要一個服務器,它不是免費的(他們有一個免費的使用層)。但好處是你有一個模擬p2p連接,而不需要做服務器的事情,不需要客戶端下載。