Я могу отправлять и получать сообщения с помощью 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
, как делал раньше, без повторного открытия соединения при каждом вызове маршрута. Возможно ли такое?