React客户端套接字未与服务器套接字连接

钱德鲁

所以我刚接触 socket-io 并做出反应,我使用 express 作为后端。我使用的 socket.io-client 版本是 3.0.3。我在后端使用的 socket-io 包的版本也是 3.0.3,服务器连接到通过原始 html 套接字给出的其他请求,但它没有与 react socket.io-client 连接。

客户端:

import './App.css';
import {MainComponent} from "./Components/MainComponent"
import {BrowserRouter as Router} from "react-router-dom";
import openSocket from "socket.io-client";
const socket = openSocket("http://localhost:5000");


function App() {
  
  socket.on("chat", message => {
    console.log(message);
  });

  return (
    <div className="App">
    <Router>
    <MainComponent></MainComponent>
    </Router>
    </div>
  );
}

export default App;

服务器端:

const express = require("express");
const app = express();
const http = require("http").createServer(app);
const io = require("socket.io")(http);
const bodyParser = require("body-parser");
const cors = require("cors");
const mongoose = require("mongoose");
const Chats = require("./model")

mongoose.connect("mongodb://localhost/chats",{useNewUrlParser:true});
const db = mongoose.connection;

io.on("connection",(socket)=>{


    console.log("user has connected")
    io.emit("chat","hellow world");
    socket.on("join-room",(room)=>{
        Chats.find({},(err,data)=>{
            if(err) throw err; 
            socket.emit("load-messages",data)
        })
    })
    socket.on("message",(data)=>{
        socket.join(data.room);
        io.to(data.room).emit("serverMessage",{message:data.message,user:data.user})
        const newChat = new Chats({message:data.message,user:data.user,room:data.room})
        newChat.save();
    })
})

app.use(cors())
app.use(bodyParser.json());
app.use(express.static("public"))



app.get("/",(req,res)=>{
    res.sendFile("index.html")
})

app.get("/chats",(req,res)=>{
    Chats.find({},(err,data)=>{
        if(err) throw err; 
        res.json(data)
    })
})



http.listen(5000,()=>{
    console.log("the server is up and running in the port 5000")
})
热心网

将客户端的第 5 行更改为以下内容:

const socket = openSocket("http://localhost:5000", {transports: ['websocket']});

在服务器端更改以下行

io.emit("chat","hellow world");

对此

socket.emit("chat","hellow world");

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

服务器/客户端套接字连接

如何使服务器套接字广播到那里,并让客户端套接字检测并连接

将客户端套接字与服务器套接字连接时出现问题

PHP客户端套接字与C#套接字服务器的连接

客户端未与服务器C连接(套接字编程)

C ++套接字客户端到python服务器未创建连接

Java TCP 客户端/服务器套接字

客户端js上的套接字服务器?

套接字Java客户端-Python服务器

Java套接字。服务器-客户端通信

套接字编程-简单的客户端/服务器

Java客户端/服务器套接字问题

TCP套接字从多个顺序客户端转发到与服务器的单个持久套接字连接

如何使用url将python套接字客户端连接到服务器套接字?

客户端套接字无法连接到服务器套接字,[Errno 32] 管道损坏错误

设置客户端套接字和服务器套接字侦听器 (Java)

如何使用客户端套接字作为服务器套接字python

无法从Java套接字服务器接收数据到C套接字客户端

如何使客户端套接字等待服务器套接字

如何使客户端套接字等待来自服务器套接字的数据

将输入从C套接字客户端读取到Java套接字服务器

服务器套接字写入时,是否等待客户端套接字读取?

套接字服务器同时响应来自客户端套接字的多个请求

为什么要在客户端套接字之前打开服务器套接字?

Python 2.7.8:套接字-TCP套接字中的客户端服务器数据丢失

检查PHP套接字服务器中的断开连接客户端

套接字编程:客户端断开连接可使服务器挂起

套接字连接被拒绝,但是客户端和服务器均独立工作

C服务器套接字拒绝python客户端的连接