2014-05-12 165 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要接受答案,请单击选中标记在答案的左边,它会变成绿色,表示你接受了答案。 –