我对这个 socket.io 很陌生。
我有代码,这是节点服务器代码:
var express = require("express");
var app = express();
var http = require("http").createServer(app);
var socketIO = require("socket.io")(http);
var socketID = "";
socketIO.on("connection", function (socket) {
console.log("User is conneected ", socket.id);
socketID = socket.id;
});
这是 ejs 文件的代码:
......
<script src="/public/js/socket.io.js"></script>
<script>
......
var socketIO = io("http://localhost:3000");
......
</script>
......
socket.io.js 文件位于 here:
我尝试过,但没有任何效果。每当我刷新页面时都会弹出相同的错误。 我对此很陌生,我真的很想尽快解决它!!
我已经有监听功能了
socket.on
:
http.listen(3000, function () {
console.log("Server has started running!!");
.........................
.............
})
下面的代码对我有用。
var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
io.sockets.on('connection', function (socket) {
console.log(socket);
})
server.listen(3000, function(){
console.log('listening on *:3000');
});
<script src="/socket.io/socket.io.js" > </script>
<script>
$(function () {
var socket = io.connect();
});
</script>
socket.io.js 与 https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js.. 中的相同。检查package.json中已安装的serail io版本,并将相同版本放在路径socket.io/2.2.0中,它将可以工作
请检查您的前端和后端中的 socket.io 版本。它应该是兼容的。我有同样的问题,所以我通过版本更改解决了它。就像我的前端有 2.2.0,所以我在后端安装 1.7.2 或与前端相同。
这是我最新(2024 年 1 月)的 Typescript 解决方案:
服务器.ts
import express, { Express, Request, Response } from 'express';
import { Server, Socket } from 'socket.io';
import { createServer } from 'http';
import path from 'path';
const app: Express = express();
app.set("port", process.env.PORT || 3000);
const httpServer = createServer(app);
const io = new Server(httpServer, {/* options */});
app.get("/", (req: any, res: any) => {
res.sendFile(path.resolve("./client/index.html"));
});
io.on("connection", function(socket: Socket) {
console.log("a user connected");
socket.on("message", function(message: any) {
console.log(message);
});
});
const server = httpServer.listen(3000, function() {
console.log("listening on *:3000");
});
./client/index.html
<!-- ./client/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
</head>
<body>
<button onClick="sendMsg()">Emit Msg</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.7.3/socket.io.js"></script>
<script>
const socket = io("http://localhost:3000");
function sendMsg() {
socket.emit("message", "HELLO WORLD");
}
</script>
</body>
</html>