2014-05-12 168 views
1

我使用代碼socket.io網站的例子,有一些問題404 Socket.io連接

我的服務器代碼(在Debian 192.168.5.200)

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

server.listen(1337); 

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

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

我的客戶端代碼(指數。 HTML)

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

我開始節點服務器 在瀏覽器中打開的http:// {主機IP}:1337 和... socket.io連接上了404

它試圖讓 「/ API/1 /ΔT= ...」 網址,並以404錯誤得到答案通過特快 「無法獲取/ API/1 /ΔT= ...」

請幫助我(

+0

你可以檢查http :: // {host ip}:1337/socket.io/socket.io.js是否加載JS? –

+1

你一直在寫'http :: //'。這是錯的,它應該是'http://'。有趣的是,你的URL實際上並不是無效的(':'是URL安全的),但它指向錯誤的文件。 (相對而言,它會解析爲'http:// your_server/http :: //無論哪裏不是你想要的) – marinus

+0

socket.is.js加載爲JS文件 – zyaleniyeg

回答

0

試圖改變自己的客戶端代碼:

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

而且,爲了能去/api/1...您需要註冊相應的app.get,如如app.get("/api/*", ...,它將處理到/api/...的所有連接。否則,預計你會得到404錯誤。

+0

wtf?工作!但是爲什麼?:) 非常感謝! – zyaleniyeg

+0

請參閱https://github.com/LearnBoost/socket.io-client爲什麼有任何接受答案的機會,如果它有效? –

+0

@ user3626156要接受答案,請單擊選中標記在答案的左邊,它會變成綠色,表示你接受了答案。 –