我正在尝试在我的网站上实现聊天,但是我无法使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”,它可以工作,但是我希望它可以在整个局域网上工作。
答案 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>