使用Express Routes接收来自客户端的套接字发射

时间:2020-08-07 06:12:07

标签: javascript node.js express sockets socket.io

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

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)    
    });

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

0 个答案:

没有答案