【问题标题】:Socket not emit messages套接字不发出消息
【发布时间】:2022-01-25 04:35:24
【问题描述】:

我在使用 React 和 ExpressJS 从客户端到服务器接收消息时遇到问题。在客户端启动sendMessage 功能后,我想将我的消息发送到服务器,但是,我不知道为什么我的服务器没有收到此消息并且io.on("message", (message) => { 没有通过他的console.log 启动:/

这是我的代码

服务器端: index.ts

const server = http.createServer(app);
export const socketIo = socket(server);

socket.ts

export const socket = (httpServer: any) => {
    const io = new Server(httpServer, { cors: { origin: "http://localhost:5000" } });

    io.on("connection", (socket) => {
        console.log("Socket connected!")
        socket.emit('connection', null);
    });

    io.on("message", (message) => {
        console.log("NEW MESSAGE: ", message)
    })
}

客户端: 应用程序.tsx

const SOCKET_SERVER = "http://127.0.0.1:3000";

export const socket = socketClient(SOCKET_SERVER);
socket.on('connect', () => {
  console.log('CONNECTED WITH BACKEND SOCKET')
})

聊天.tsx

  const sendMessage = () => {
    const message = form.getFieldsValue()["typedMessage"];

    socket.emit("message", message);
    
    form.resetFields();
  };

感谢您的帮助!

【问题讨论】:

    标签: node.js reactjs typescript express sockets


    【解决方案1】:
    io.on("connection", (socket) => {
        console.log("Socket connected!")
        socket.emit('connection', null);
    });
    
    io.on("message", (message) => {
        console.log("NEW MESSAGE: ", message)
    })
    

    “连接”在服务器侦听器上触发并提供连接的套接字。然后使用套接字接收消息。这意味着必须在socket 上接收消息,而不是在侦听器io 上:

    io.on("connection", (socket) => {
        console.log("Socket connected!")
        socket.emit('connection', null);
    
        socket.on("message", (message) => {
            console.log("NEW MESSAGE: ", message)
        });
    });
    

    【讨论】:

    • 在客户端是同样的逻辑,我必须在 socket.on('connect', () => { 内为每个发射/开启收听
    • @BokuNoHeeeero:在客户端socket已经是连接的socket,在客户端没有服务器socket。
    猜你喜欢
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多