[英]Socket.io is not found in the client-side
const path = require('path');
const http = require('http');
const express = require('express');
const socketio = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = socketio(server);
const port = 3000 || process.env.PORT;
app.listen(port, () => {
console.log(`server running on port ${port}`);
});
io.on('connection', socket => {
console.log(socket);
});
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
</script>
</body>
</html>
我重新正確安裝了所有模塊,但沒有幫助。
問題是您正在創建兩個 Web 服務器,將 socket.io 附加到其中一個,但只啟動另一個。
這兩行代碼都創建了一個新的 Web 服務器:
const server = http.createServer(app);
app.listen(port, ...);
但是,實際上只有第二個開始了,而這不是您將 socket.io 綁定到的那個。 因此,您綁定 socket.io 的服務器永遠不會啟動,因此應該與您的 socket.io 服務器通信的客戶端內容都不會正常工作。
要修復它,請將您的服務器代碼更改為:
const path = require('path');
const express = require('express');
const socketio = require('socket.io');
const app = express();
const port = 3000 || process.env.PORT;
const server = app.listen(port, () => {
console.log(`server running on port ${port}`);
});
const io = socketio(server);
io.on('connection', socket => {
console.log(socket);
});
現在,您將只創建一個 Web 服務器,啟動該服務器並將 socket.io 綁定到該服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.