2016-02-25 43 views
0

我正在編寫一個Node.js應用程序,因爲我需要將數據傳輸到瀏覽器,所以我包含了Socket.io庫。它是否正確,一旦它開始,我在控制檯中得到所有這些請求?Socket.io在啓動時發送大量請求

GET http://192.168.8.115:1337/socket.io/?EIO=3&transport=polling&t=LCP0qc- 200 OK 1ms 
GET http://192.168.8.115:1337/socket.io/?EIO=3&transport=polling&t=LCP0qd4 200 OK 5ms 
POST http://192.168.8.115:1337/socket.io/?EIO=3&transport=polling&t=LCP0qdf&sid=kRNcDo8LvANa39H3AAAC 200 OK 1ms 
GET http://192.168.8.115:1337/socket.io/?EIO=3&transport=polling&t=LCP0qdn&sid=kRNcDo8LvANa39H3AAAC 200 OK 1ms 
POST http://192.168.8.115:1337/socket.io/?EIO=3&transport=polling&t=LCP0qe4&sid=EYk1kgtAKZ-ju0IqAAAD 200 OK 1ms 
GET http://192.168.8.115:1337/socket.io/?EIO=3&transport=polling&t=LCP0qeA&sid=EYk1kgtAKZ-ju0IqAAAD 200 OK 1ms 
GET http://192.168.8.115:1337/socket.io/?EIO=3&transport=polling&t=LCP0qeo&sid=kRNcDo8LvANa39H3AAAC 200 OK 130ms  
GET http://192.168.8.115:1337/socket.io/?EIO=3&transport=polling&t=LCP0qfD&sid=EYk1kgtAKZ-ju0IqAAAD 200 OK 128ms 

我請求EJS模板,通過這個代碼:

app.get('/', function(req, res) { 
    res.render(__dirname + '/views/index'); 
}); 

這就是我如何開始Socket.io連接:

var socket = io.connect('/'+ip); 
socket.on('update', function(data) { 
    $('#dateTime').html(data.time); 
}); 

它看起來非常奇怪,我和我不在Google上找不到關於此搜索的任何文檔!

回答

0

這是正確和預期的行爲。

第一個包是一個連接包。

它看起來像你是從兩個不同的瀏覽器(或兩個不同的標籤)在同一時間連接。參數t=是打破任何緩存的唯一編號。

第一個POST與每個sid是連接。以下GET只是輪詢,而POSTpong數據包,表示該連接仍處於活動狀態。

如果將套接字升級到Web套接字,它會一直停止接觸Web服務器。

+0

嗯......奇怪的是,我從2個電腦連接,但我從每臺機器(1個瀏覽器,1個選項卡)啓動一個連接。如果我現在嘗試沒有任何改變的代碼,我有3個請求和1個帖子,所以有點不同。這就是爲什麼我說這是一個奇怪的行爲。我會嘗試這個websocket的東西...你會推薦任何關於它的特定文件嗎? – Mark

+0

如果您的網絡上有可能,socket.io會自動升級到websockets。它可能是你初始化到socket.io實例,並用兩個連接點擊你的服務器? – bolav

+0

這怎麼可能?我的代碼都在問題中,並且每個電腦只有一個瀏覽器指向服務器的該頁面... – Mark

相關問題