2017-07-07 53 views
0

請幫助!我正在用Heroku製作Node/Express和React網站。 Server.js在客戶端提供expresshandlebar模板,呈現App.jsNodeJS,React on Heroku,Socket.io給出錯誤

到目前爲止,所有工作都在進行,直到我試圖實現Socket.IO。 Socket.IO完美的作品在本地主機,但給出了在Heroku上的錯誤:

VM63:35 WebSocket連接到 'WS:// mysite的:8080/socket.io客戶端/ EIO = 3 &運輸= WebSocket的' 失敗:網頁套接字握手期間錯誤:淨:: ERR_CONNECTION_RESET

這裏是代碼的相關部分:

Server.js

var express = require('express'), 
var port = process.env.PORT || 8080; 
var httpServer = require('http').createServer(app); 
httpServer.listen(port) 
io.on('connection', function (socket) { 
console.log('Connection started');}); 

App.js

var io = require('socket.io-client'); 
var new_socket = io.connect(); 

我看了很多網站,並嘗試了多種選擇,如: 1)客戶端和服務器socket.io '路徑' 的設置和 '運輸'

path: '/socket.io-client' 
transports: ['websocket'] 

2)按照Heroku的建議試試WebSockets。這會引發另一個錯誤'錯誤503'

回答

0
this.io = socket.connect(yourpath, { 
    transports: ['websocket'], 
    upgrade: false, 
}); 

首先,您需要連接到確切的套接字服務器。你可以嘗試上面的代碼,我用我的項目

+0

Woah你是一個天才!這個竅門!沒有更多的錯誤,我的控制檯正在記錄服務器和客戶端發送的消息。現在,你能解釋這是如何工作的嗎? – user3577892

+0

默認情況下,首先建立長輪詢連接,然後升級爲「更好」的傳輸(如WebSocket)。所以我們的配置會強制他們跳過使用長輪詢 – HuyTran