javascript - 使用 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
像以前那样接收数据的情况下,每次调用路由时都重新打开连接。甚至可能吗?
解决方案
推荐阅读
- delphi - 按字段值比较更新前后的 Delphi TFDQuery
- netsuite - 在支持案例自定义子选项卡下添加自定义搜索
- javascript - 按持续时间问题一次显示一个 API 项
- google-chrome - 面临 NGINX HTTP 到 HTTPS 重定向的问题
- r - r中的循环函数读取和保存多个数据文件
- css - React 响应式 UI 不会在移动设备上以微小的文本呈现
- c++ - 如何解决?
- java - Firestore Java 将文档插入集合
- javascript - Utilities.unzip 不适用于包含子文件夹的 zip 文件
- c++ - 为什么 CMake 找不到 gtk(通过 pkg_config)但 cmd 找到了?