2012-11-15 81 views
2

我想使用快遞服務的靜態頁面與快遞與socket.io溝通。問題後我一直遇到問題。我做了這麼多事情,並且搜索了很多次,我不能相信我沒有找到我的具體問題的答案。我一直在進入向您顯示服務器的地方,或者向您顯示客戶端,但不會與其他客戶端通信。或者兩者兼而有之,但不能與快遞。當我向組合中投入快遞時,我開始獲得404s,並且他們移動了我的socket.io客戶端腳本,但似乎無法使其工作。這就是我現在的位置,雖然這是關於我的第20個配置。Node.js:不能得到socket.io與快遞,得到404s腳本文件

服務器:

var express = require('express'); 
var app = express(); 
var http = require('http'); 
var server = http.createServer(app); 
var io = require('socket.io').listen(server); 

app.configure(function() { 
    app.use(express.static('html')); 
}); 

app.listen(8080); 

io.sockets.on('connection', function (socket) { 
    console.log('A socket connected!'); 
}); 

客戶:

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost:8080'); 
    socket.send('testing'); 
</script> 

我試圖改變的SRC到/html/socket.io.js(和複製從dist目錄中的所有必需的文件/ HTML ),試圖在html目錄下創建一個腳本目錄,嘗試鏈接到socket.io的cdn,並且我一直在獲取404s。我知道這是愚蠢和簡單的,我搞砸了,我無法弄清楚我的生活。謝謝!

編輯:我現在要做的所有事情都是服務於index.html頁面,並在它看到連接時打印到服務器控制檯。

+0

從來沒有人聽到任何人使用express與socket.io,大多數人一般使用連接。 –

+2

呃,那是錯的。 Express與socket.io完美兼容 – kimpettersen

+0

如果你刪除socket.io並渲染一些純html,會發生什麼?那樣有用嗎? – kimpettersen

回答

8

看看here的例子。我通過將app.listen更改爲server.listen來與Express 3配合使用。我認爲socket.io設置的路由特定於http服務器,並且不使用快速路由機制。

+0

Argh。我已經經歷了所有這些例子,但他們中沒有一個處理明確,我也無法讓他們一起工作。將app.listen更改爲server.listen工作正常,並且我仍然通過express直接提供html頁面。現在我看着它,這完全有道理。我附上了socket.io來表示它何時需要監聽http服務器。我已經看到的例子顯示它正在偵聽表達,但是在它們改變之前,不再返回http服務器。謝謝!現在我可以在週末玩一些東西。 – sdouble