2014-04-24 60 views
5

因此,我試圖使用示例heroku應用程序:https://github.com/lstoll/socket-io-chat-heroku作爲模板來構建我自己的socket.io應用程序,但我在Express 4.0,節點0.10.x上運行,和Socket.io 0.9.16。Express 4.0中的Heroku socket.io示例錯誤

現在的問題是,當我跑我的服務器,一切都很好,但是當我跑我的客戶,我得到以下錯誤:

Uncaught ReferenceError: require is not defined socket.io.js:12 
Uncaught ReferenceError: io is not defined chat2:2 

我相關的服務器代碼如下:

var app = express(); 
var http = require('http'); 
var server = http.createServer(app); 
var sio = require('socket.io'); 
var port = 3000 || process.env.PORT; 

server.listen(port); 
var io = sio.listen(server); 

io.sockets.on('connection'), function(socket) { 
    ... 
}); 

在我的客戶端,我有以下幾點: 我都試過(這是玉,順便說一句):

script(src='/socket.io/socket.io.js') OR script(src='http://localhost:3000/socket.io/socket.io.js') 
    var socket = io.connect() OR var socket = io.connect('http://localhost:3000') 

這些選項都沒有工作,總是導致在客戶端的錯誤。 Express 4.0有什麼特別的嗎?我在這裏問了一個非常類似的問題:Node.js /socket.io/socket.io.js not found express 4.0但這是另一個嘗試讓聊天工作與不同的模板。

更新和編輯:經過一些工作,我能夠使用express 4.0和socket.io部署一個heroku應用程序,位於:http://salty-escarpment-7398.herokuapp.com/chat

現在的問題是要回融入我當前的應用程序,並經過大量的工作,我現在正在一個錯誤:

22:19:56 web.1 | GET /socket.io/?EIO=2&transport=polling 404 26ms - 1.67kb 
22:19:59 web.1 | GET /socket.io/?EIO=2&transport=polling 404 25ms - 1.67kb 

我:

io.set('transports', ['xhr-polling']); 
io.set('polling duration', 10); 

要將其設爲xhr-polling,我的服務器代碼與上面的代碼非常相似。但是,頁面加載時,只有在嘗試發送聊天時纔會發生任何事情,404開始出現。

感謝

+0

您是否發現了使用'/socket.io/?EIO=2 ...'發現404錯誤的解決方案? – JVE999

回答

0

默認情況下Socket.IO 1.0.4允許輪詢和WebSocket的運輸。您刪除了投票傳輸!返回投票回傳:

io.set('transports', ['websocket', 
        'flashsocket', 
        'htmlfile', 
        'xhr-polling', 
        'jsonp-polling', 
        'polling']);