2011-09-09 200 views
0

好吧,我已經閱讀了一百萬個教程,並且在評論部分總是有人問我現在正在經歷的事情,並且沒有給出真正的答案,只是爲了澄清,是的,即時通訊使用websockets工作的最新版本的chrome。HTML 5網絡套接字

頁面加載後,我不斷收到「已斷開」錯誤。在IIS

首先IM運行過程中出現PHP 5(不是我的選擇)

我已經下載http://bohuco.net/dev/websocket/?source=WebSocketServer.php

,並試圖測試出http://www.flynsarmy.com/2010/05/php-web-socket-chat-application/

,我已經下載了該文件的位置是在www.something.co.uk/html5/test

,其中包括上面的演示文件,並WebSocket的PHP。

,我感到困惑的事情是如何//連接到服務器

var server = new ServerEventsDispatcher("<someip>:12345"); 

與位於上面的文件路徑server.php連接。

我可以在someip部分添加域和URL嗎?

任何幫助,這是非常感謝。

編輯

一些更多的閱讀之後,似乎我可以。

http://dev.w3.org/html5/websockets/

var socket = new WebSocket('ws://game.example.com:12010/updates'); 
socket.onopen = function() { 
    setInterval(function() { 
    if (socket.bufferedAmount == 0) 
     socket.send(getUpdateData()); 
    }, 50); 
}; 

因此,我的下一個問題(因爲這仍然沒有解決的情況)

的server.php文件中,爲localhost有效或者它必須是IP /域名?

$server = new WebsocketServer('localhost', 12345, 'process'); 

編輯

我已經改變了網絡套接字連接

//Connect to the server 
var server = new ServerEventsDispatcher("domain.co.uk:81/path/to/server.php"); 

,並改變了scripts.php的端口81,仍然一無所獲......

回答

2

的WebSocketServer您創建對象時給出的端口上已連接啓動的服務器。請注意,由於顯而易見的原因,此端口不能與Web服務器相同。

JavaScript端需要打開一個WebSocket到該服務器,假設ServerEventsDispatcher在內部打開一個新的WebSocket在ws://:12345 /上,您需要添加運行WebSocketServer的服務器的主機名或IP地址那裏有正確的端口號。

因此,說WebSocketServer在someserver.domain上運行。COM端口81(因爲80由IIS最有可能使用的):

var server = new ServerEventsDispatchet("someserver.domain.com:81"); 

尋找在該JavaScript類它實際上是打開直接使用地址的網頁套接字的代碼;所以你也可以在那裏使用ws://someserver.domain.com:81,如果你想指定協議(或SSL的wss)。

在編輯的後續編輯中編輯: 我會在該WebSocketServer類中爲您的服務器使用公共地址;因爲它會嘗試在其綁定:

socket_bind($this->master, $this->address, $this->port) or die("socket_bind() failed"); 

還看到:http://nl3.php.net/manual/en/function.socket-bind.php

除了你的最新編輯:

你不應該的路徑添加到您的PHP腳本。當你打開你的PHP腳本時,它應該嘗試打開該WebSocket服務器;但websocket服務器將運行在"ws://<servername>:<port>"。因此,在JavaScript中,您可以將其用作地址,然後在瀏覽器中瀏覽測試程序的php腳本。

- 編輯服務器使用 -

因爲這會變得太長/不可讀的評論;根據該網站,你必須使用php命令行來實際啓動服務器類:

「打開一個終端窗口(窗口上的命令行)並導航到您的項目目錄。使用PHP執行腳本,如果全部轉到計劃你應該得到以下消息:「

$ php -f server.php 
Server Started : 2010-05-26 22:40:03 
Listening on : localhost port 12345 
Master socket : Resource id #5 

當這樣做了;服務器應該啓動並收聽。然後,您可以使用JavaScript中的WebSocket連接到該服務器,並使用websocket url,如上所述:)

+0

仍然沒有這樣的喜悅... –

+1

您可以嘗試檢查websocketserver是否實際在服務器上運行,方法是檢查netstat輸出。當你瀏覽到啓動WebSocketServer的php腳本時,它應該顯示在那裏監聽給定的端口(:81)。另外,您的服務器必須允許通過端口81傳入流量。 – Yhn

+0

!在端口81瀏覽你的URL到server.php不起作用,但是在80端口上!讓我調查更多! –