使用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)
});
这里是apps
。 app.get
中的第一行有效,但是我无法像以前一样弄清楚如何在没有socket
的情况下接收数据,而每次调用路由时都不会重新打开连接。甚至有可能吗?