首页 > 解决方案 > 使用 Express Routes 从客户端接收套接字发射

问题描述

我可以使用以下代码在服务器和客户端之间正确地使用 socket.io 发送和接收消息server.js

const express = require('express')
const app = express()
const port = 4000
var http = require('http').createServer(app);
var io = require('socket.io')(http);
var args = {class: "one"};

io.of('/programs').on('connection', function (socket) {
    socket.on('joinRoom', (room) => {
        socket.join(room);
        console.log("New Client joined room: " + room);
    });
    socket.emit('welcome', args)
    socket.on('welcome', (data) => {
        console.log('Got result:', data);
    });
});

数据在这里被正确接收。现在我想使用 Express 路由,这样每当我到达路由时,它应该发出,welcome以便客户端捕获并返回数据。为此,我进行了以下更改:

const express = require('express')
    const app = express()
    const port = 4000
    var http = require('http').createServer(app);
    var io = require('socket.io')(http);
    var args = {class: "one"};
    
    io.of('/programs').on('connection', function (socket) {
        socket.on('joinRoom', (room) => {
            socket.join(room);
            console.log("New Client joined room: " + room);
        });
    });
    app.get('/', (req, res) => {
        io.of('/programs').to('apps').emit('welcome', args);
        // Receive data emitted by client
        // res.send(data)    
    });

这里apps是房间。第一行app.get有效,但我无法弄清楚如何在没有socket像以前那样接收数据的情况下,每次调用路由时都重新打开连接。甚至可能吗?

标签: javascriptnode.jsexpresssocketssocket.io

解决方案


推荐阅读