首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从路由请求发送ws消息

如何从路由请求发送ws消息
EN

Stack Overflow用户
提问于 2019-10-21 17:31:39
回答 1查看 596关注 0票数 1

我一直在尝试创建一个应用程序,使用电报机器人,快速服务器和反应应用程序。因此,我需要从telegram-bot创建一个POST请求来表达,而express将POST数据发送到一个websocket连接:

代码语言:javascript
复制
const express = require("express");
const app = express();
const expressWs = require("express-ws")(app);

// handles bot request
app.post("/request", (req, res) => {
  playlist.push(req.body.url);
  res.status(200).send({ message: "video is added to playlist" });
});

// after handling requst data must go here and send ws message to client side
app.ws("/echo", (ws, req) => {
  ws.on("message", msg => {
  ws.send(`msg is = ${msg}`);
  });
});

我做得对吗?如果是这样的话,在处理app.post路由的请求后如何从调用ws.send?

EN

回答 1

Stack Overflow用户

发布于 2019-10-22 00:06:29

根据我从你的问题中得到的理解,这是你的代码的一个更新版本,它完全符合你的要求。

我用ws替换了express-ws包,因为这对您的用例来说已经足够了。

express服务器在端口8080上运行,而websocket服务器在端口8081上运行,因为它们是不同的协议,不会在同一端口上运行(您可以使其工作,但我不推荐使用See this question

代码语言:javascript
复制
const express = require("express");
const Websocket = require('ws');
const app = express();

app.use(express.json());
app.use(express.urlencoded({ extended: false }));

const wss = new Websocket.Server({ port: 8081 });

wss.on('connection', (ws) => {
  console.log('One client connected');
  ws.on("message", msg => {
    ws.send(`msg is = ${msg}`);
  });
})

// handles bot request
app.post("/request", (req, res) => {
  // Broadcast URL to connected ws clients
  wss.clients.forEach((client) => {
    // Check that connect are open and still alive to avoid socket error
    if (client.readyState === Websocket.OPEN) {
      client.send(url);
    }
  });

  res.status(200).send({ message: "video is added to playlist" });
});


app.listen(8080, () => {
  console.log('Express listening on 8080');
  console.log('Websocket on 8081');
});

通过curl和curl -d 'url=https://example.com/examplesong' localhost:8080/request进行了测试,我有一个连接到ws://localhost:8081的客户端,一切看起来都很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58483487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档