我刚刚开始使用socket.io,在客户端页面上出现了JS错误。
io未定义
如何解决这个问题?
或者你可以使用Socket.io CDN:
<script src="https://cdn.socket.io/socket.io-1.0.0.js"></script>
<script src="http://yournodeserver/socket.io/socket.io.js"></script>
放入你的代码中。在使用Express时,我遇到了同样的问题。即使将server:port放置在script中也不能生效。在服务器启动后,我会让socket监听该端口,我想这是个错误。将它改成下面的方式就可以正常工作。
var app = express();
app.set('port', process.env.PORT || 3000);
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(app.get('port'));
在客户端,我只需包含脚本。 <script src="/socket.io/socket.io.js"></script>
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const {
Server
} = require('socket.io');
const io = new Server(server);
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html')
});
io.on('connection', (socket) => {
console.log('a user connected');
});
app.listen(3000, () => {
console.log('Listining on 3000');
}); // wrong
server.listen(3000, () => {
console.log('Listining on 3000');
}); // correct
<script src="http://cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js"></script>
无需编辑任何内容,只需转到您的index.js并确保您放置了:
server.listen(PORT,()=>{
/**Code**/
})
更改脚本文件的顺序,先是库socket.io,然后是您自己的脚本文件
<script src="/socket.io/socket.io.js"></script>
<script src="./js/your-script.js"></script>
我必须这样做。(为了客户。)
function setup() {
var socket;
socket = io.connect('http://localhost:3000');
}
/*
This solved my error.
*/