socket.io - Nextjs 和 Socket IO
问题描述
希望你有一个美好的一天!我正在学习 Socket.IO,当然教程可以在互联网上使用,但是我在旅途中遇到了障碍,在教程中似乎一切正常,但是当我尝试时,我不知道为什么会这样发生了,所以基本上我想腾出空间,然后每次有人加入房间时,我都会得到响应(在服务器中),i got the respond
但为什么我得到多个响应?当我在房间里时..
这是我的代码server/index.js
const express = require("express");
const socketio = require("socket.io")
const http = require("http");
const cors = require("cors");
const PORT = process.env.PORT || 5000;
const router = require("./router");
const app = express();
const server = http.createServer(app);
const io = socketio(server);
app.use(cors());
app.use(router);
io.on("connection", (socket) => {
console.log("New connection establish!");
socket.on("disconnect", () => {
console.log("User left the room!");
});
});
server.listen(PORT, () => console.log(`Server started on ${PORT}`));
这是我的包 jsonserver
{
"name": "myserver",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "myname",
"license": "ISC",
"dependencies": {
"cors": "^2.8.5",
"express": "^4.17.1",
"socket.io": "^2.2.0",
"nodemon": "^2.0.12"
}
}
这是我的front end
import React, { useState, useEffect } from "react";
import io from "socket.io-client";
let socket;
export default function index({ data }) {
console.log(data);
const ENDPOINT = "localhost:5000";
useEffect(() => {
setRoom(data.room);
setName(data.name);
socket = io(ENDPOINT);
console.log(socket);
}, []);
const [room, setRoom] = useState("");
const [name, setName] = useState("");
if (name == "") {
return null;
}
return (
<div className="bg-lightgrey min-h-screen flex justify-center items-center flex-row">
<div className="container mx-auto max-w-sm py-10">
<div className="rounded-md shadow-lg py-4 px-4 bg-white">
<p className="text-black font-bold text-3xl">{room}</p>
<p>{name}</p>
</div>
</div>
<div className="ml-2 container mx-auto max-w-sm py-10">
<div className="rounded-md shadow-lg py-4 px-4 bg-white">
<p className="text-black font-bold text-3xl">{room}</p>
<p>{name}</p>
</div>
</div>
</div>
);
}
export async function getServerSideProps({ query }) {
// Fetch data from external API
const data = await query;
// Pass data to the page via props
return { props: { data } };
}
这是我在终端中得到的回应
本教程使用的是 reactjs,但我是using nextjs
,它有什么不同吗?对不起,如果我英语不好,希望你们能理解..
解决方案
我以某种方式修复了它,我认为这是因为我的 socket.io 和 socket.io-client 版本不同。
推荐阅读
- javascript - 使用 let 关键字在块内重新声明变量并在它之前访问但给出错误
- powershell - Powershell 脚本并输出到文件共享
- java - Activity 对 Android 中的通信进行分段
- html - CSS中的网格系统
- javascript - React Native FlatList 中的 JSON
- css - 动画翻译无法正常工作
- ios - 在构建我的 Firestore 数据库时需要帮助/建议
- python - 如何从另一个类的 __init__ 访问一个类的属性?
- java - Java 多客户端聊天服务器私信选项
- r - 按 data.table 中的所有列分组