Node.js socket.io在本地网络上不起作用

时间:2019-11-25 17:52:05

标签: node.js socket.io

我正在尝试在我的网站上实现聊天,但是我无法使socket.io在我的本地网络上工作(它适用于localhost,但是我无法从另一台计算机上访问它)。 服务器代码:

const path = require('path');
const host = '0.0.0.0';
const port = 3000;
const express = require('express');
const app = express();
const cors = require('cors');
const http = require('http').createServer(app);
const io = require('socket.io')(http);
const bodyParser = require('body-parser');
const script = require('./script');

app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

app.listen(port, host, function() {
    console.log('Running at: ',host,port);
});

app.use(express.static('public'));
app.use(express.json({limit:'1mb'}));

客户代码:

const socket = io();

index.html:

<!DOCTYPE html>
<html>
<head>
    <title>Proflands!</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script type="text/javascript" src="client.js"></script>
    <script src="/socket.io/socket.io.js"></script>
</head>
<body> </body>
</html>

我遇到的错误:

无法加载资源:服务器以404(未找到)socket.io.js:1的状态进行响应

我从以下位置获得代码的地方:https://socket.io/get-started/chat

如果我使用“ http://localhost:3000”,它可以工作,但是我希望它可以在整个局域网上工作。

2 个答案:

答案 0 :(得分:1)

@Lawrence Cherone评论: 更改:

app.listen(port, host, function() {
    console.log('Running at: ',host,port);
});

收件人:

http.listen(port, host, function() {
    console.log('Running at: ',host,port);
});

解决了问题。

答案 1 :(得分:-1)

如果收到错误:404 (Not Found) socket.io.js:,则问题出在以下位置是socket.io客户端的src路径:

<script src="/socket.io/socket.io.js"></script>

如果您从其他机器/网站等访问服务器,则将该路径更改为绝对URL以获取客户端。否则,它将尝试相对访问socket.io服务器,因为它与客户端在同一服务器上。

<script src="http://myserver:3000/socket.io/socket.io.js"></script>