2016-12-01 62 views
0

我不明白怎麼可能,當我調用io()函數到index.html例如,nodejs知道必須執行io.on()函數。我明白,io()函數到index.html用於打開客戶端和服務器之間的新連接...但我不明白用socket.io客戶端和服務器之間的通信。 也許是因爲進入服務器,我需要socket.io,然後socket.io進入服務器,最終請求執行on()函數。Io()函數前端 - socket.io

但爲了做到這一點,套接字。 Io必須獲得整個http + express軟件包才能聽取客戶的請求......是嗎?

感謝所有 莫里斯

回答

3

這不是完全清楚你問什麼,但在客戶端:

var socket = io(); 

是一個快捷方式:

var socket = io.connect(); 

試圖建立與當前網頁加載的相同主機和端口的socket.io連接,並將表示該連接的對象存儲在socket變量。

但我不明白與socket.io客戶端和服務器 之間的通信。

如果服務器正在監聽socket.io連接,則io()將連接到該服務器。從那以後,客戶端可以使用socket.on('someMsg', fn)監聽傳入消息,或者客戶端可以使用socket.emit('someMsg, someData);向服務器發送消息。

同樣,服務器可以偵聽來自客戶端的傳入消息或向客戶端發送新消息。

但爲了做到這一點,套接字。 Io必須獲得整個http + express 包才能聽取客戶的要求......是嗎?

那麼,有點。如果你想要一個服務於你的網頁並可以接受socket.io連接的單一web服務器,那麼你至少需要http模塊(用於服務器)和socket.io模塊(用於socket.io服務器)。如果您想要一個功能更全的Web服務器,您可以在其中定義路由和許多其他功能,那麼您可以一起使用Express和socket.io。

+0

完美!全清!非常感謝 :) – DevWeb