2012-07-26 90 views
0

Possible Duplicate:
socket.io: Failed to load resourcesocket.io +快遞networkerror:404個

一個簡單的快遞+ socket.io hellow世界的應用程序似乎不工作,我不斷收到

"NetworkError: 404 Not Found - http:// localhost:3002/socket.io/socket.io.js"

任何人都知道這個問題?

代碼:

app.js

var express = require('express'), 
http = require('http'); 

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


app.configure(function() { 
app.use(express.static(__dirname + '/public')); 
}); 

app.listen(3002); 


io.sockets.on('connection', function(socket) { 
socket.emit('news', {hello: 'world'}); 
socket.on('my other event', function (data) { 
    console.log(data); 
}); 
}); 

的index.html

<script src="/socket.io/socket.io.js"></script> 
<script> 
var socket = io.connect('http://localhost'); 
socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my:'data' }); 
}); 

+0

[「404或Not Found錯誤消息是HTTP標準響應代碼指示客戶端能夠與服務器通信,但服務器找不到所請求的內容。「](http://en.wikipedia.org/wiki/HTTP_404) – Engineer 2012-07-26 07:49:23

+0

是的,但代碼有什麼問題導致這個問題? – nihulus 2012-07-26 08:00:06

回答

1

你Socket.IO服務器監聽端口3002,但你連接到:

var socket = io.connect('http://localhost'); 

它默認使用標準端口80。試試這個:

var socket = io.connect('http://localhost:3002'); 

而且你可能會改變localhost到你的機器的IP。

旁註:如果您在同一端口上運行Express服務器和Socket.IO服務器,那麼你可以簡單地做:

var socket = io.connect(); 
+0

謝謝您的回覆先生!我不認爲使用本地主機或我的IP有什麼不同?另外我已經嘗試了你的修復,仍然404。 – nihulus 2012-07-26 08:12:03

+0

這很有趣。也許這是因爲您在套接字偵聽之後觸發了服務器偵聽?放置這行:'var io = require('socket.io')。listen(server);'app'listen(3002);'後面''。這是我擁有的最後一個想法。 :) – freakish 2012-07-26 08:40:27

+0

請確保您沒有使用舊的無端口URL重新加載緩存頁面。 – ebohlman 2012-07-26 11:40:49