我是socket.io的新手。目前我遇到了socket.io.js无法访问的问题。
我设法从我的本地PC访问,但当有人连接到我的局域网到我的电脑时,它会提示此错误'net::ERR_ABORTED & 404 Not Found'
。
我注意到问题是localhost
,当其他人访问您的PC localhost脚本时,他们无法正常工作。此外,我还测试了PHP'$_SERVER['SERVER_NAME']
'
server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = 3005;
io.on('connection',function(socket){
console.log(socket.id);
});
http.listen(port, function(){
console.log('listening on *:%d',port);
});
client.js
<script src="http://localhost:3005/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('http://localhost:3005');
$(function(){
socket.emit('refresh_list');
});
</script>
如果源代码需要,我会将我的代码上传到github / bitbucket。
版本: -
节点v8.9.4
Socket.io 5.6.0
Express 5.6.0
答案 0 :(得分:0)
从此处更改此脚本标记:
<script src="http://localhost:3005/socket.io/socket.io.js"></script>
到此:
<script src="/socket.io/socket.io.js"></script>
当来自网络上其他PC的某人试图加载该网页时,浏览器会尝试在http://localhot:3005
找到socket.io.js,但当浏览器在另一台PC上时,localhost
是其他PC,而不是你的服务器,因此它不起作用。
从<script>
标记中的网址中删除主机名,告诉浏览器使用相同的主机名,因为网页已加载,这就是您想要的。
您还需要更改此内容:
var socket = io.connect('http://localhost:3005');
到此:
var socket = io();
这里的想法是,如果您希望从其他计算机上工作,则必须删除对localhost
的所有引用。