Socket.io.js - net :: ERR_ABORTED& 404未找到

时间:2018-04-26 02:56:38

标签: express socket.io

我是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

1 个答案:

答案 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的所有引用。