2015-08-09 53 views
0

好的,所以我讓我的socket.io服務器在不同的端口上偵聽,但爲了使它與https一起工作,我需要讓它聽不到傳入一個端口(默認)。 (它工作正常在不同的端口加載與http,但我需要它在https上工作)socket.io.js 404(使用Apache到主機站點)

我的項目工作正常,客戶端可以連接併發送數據罰款。但是,我將該網站移到了我的主域,該域具有SSL證書。該網站通過https加載所有內容,因此無法加載http版本socket.io.js

但是,現在我已將它切換到var client = require("socket.io").listen().sockets;而不是偵聽不同的/特定的端口,但它仍然無法工作。不是給我一個連接錯誤,它根本不包括文件。

我的恐懼是,我最終需要重建我的整個網站,以通過node.js託管我的文件,我寧願不必這樣做。

我沒有使用任何其他模塊比mysql-nodesocket.io,並且我也希望,如果能夠保持這種方式。我是node.js的新手,所以我很抱歉,如果有一個明顯的答案,我不知道。

但是,我環顧四周,似乎無法在任何地方找到答案。或者,至少有一個明確的答案。

我會更好使用websockets而不是socket.io? 如果是這樣,我該如何去做這件事?誠實地說,我更願意重建我的節點應用程序,而不是重新制作我的網站。

我,包括客戶端的socket.io.js文件像這樣:

<script src="https://mysite/socket-io/socket.io.js"></script> 

但當然,404因爲它不是一個實際的文件,該文件是我的Apache服務器上。在我的public_html目錄中沒有名爲socket-io的文件夾/目錄,所以對我來說很有意義。

但是,我怎麼能得到這個工作?我需要通過node.js託管我的文件還是使用HTML5 websockets更好?我的網站用戶使用移動設備的人數相當多,所以我必須確定它也適用於移動設備。

+0

爲什麼你使用兩個獨立的web服務器(Apache和node.js)來創建你的網站?你如何建立架構?您是否嘗試使用Apache服務器或node.js服務器來提供socket.io.js文件? – jfriend00

回答

1

如果你打算使用apache來承載socket.io.js文件,那麼你需要把這個文件放到你的Apache服務器的一個可以被Apache服務的路徑上,就像任何其他的web一樣文件,您希望Apache服務器提供服務。或者,您也可以從公共CDN提供socket.io.js,並使用公共CDN URL。這只是一個JS文件。您可以將它放在任何地方或使用任何到達文件將從其提供的位置的URL。讓node.js和socket.io爲你提供服務有一些好處,因爲它確保客戶端和服務器socket.io版本始終保持同步,但是你不必這樣做。

如果您使用的是node.js(聽起來您至少有一定的容量),那麼內置於node.js中的socket.io將在您使用node.js爲您提供服務時自動提供文件網頁,並且您已經配置了socket.io來偵聽與您的node.js Web服務器相同的端口。在這種情況下,您的網頁和socket.io將使用相同的端口,並且兩者都將通過node.js服務器運行。

你還沒有真正解釋爲什麼您同時使用的Node.js和Apache,怎麼說的建築作品,爲什麼你服務的一些網站使用Apache的,而不是僅僅使用Node.js的整個站點這當然是socket.io的更乾淨選項。

如果你想使用普通的webSockets而不是socket.io,但是你可能需要在webSockets之上建立一些socket.io功能(自動重新連接,消息傳遞等等)。 )和使用普通的webSockets不會真正簡化任何Apache/node.js問題。使用Apache或node.js將socket.io.js文件提供給客戶端並且一旦客戶端擁有該文件就很簡單,但使用普通webSockets實際上比使用socket.io更多的工作是因爲額外的功能該socket.io已經建成。

+0

我使用Apache來託管我的文件,因爲這是我從一開始就一直在使用的。我可能應該更清楚地解釋;我使用node.js/socket.io來提供socket.io.js文件,但是我使用apache來爲整個網站(和子域)提供服務。我想我可以在網站中添加socket.io項目,幷包含js文件(適用於http,但不適用於https)。我不知道如何使用node.js來託管網站本身,並且會使用https工作? PHP/MySQL也可以工作嗎?節點是否足夠穩定以保持網站全天候運行?謝謝btw :) – Axiom

+1

@Axiom - 如果你已經在Apache上使用PHP,爲什麼不直接使用Apache/PHP的socket.io實現,而不是爲webSockets引入一個額外的web服務器技術到你的棧? – jfriend00

+0

哦!我不知道PHP有能力這樣做。謝謝。我會研究它 – Axiom