【发布时间】:2017-07-10 05:59:16
【问题描述】:
我有一个用 express 构建的 node js API。在我的一个 http 端点中,我想接受请求并通过 websockets 将其发送到另一台服务器,然后返回回复。我正在使用ws library。问题是websockets通信不是同步的,所以我不知道如何向API客户端返回答案。无论如何,这是我尝试过的,但还不完整:
const express = require('express');
const app = express();
const WebSocket = require('ws');
const uuid = require('uuid');
const bodyParser = require('body-parser');
const ws = new WebSocket('ws://localhost:7465/');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ extended: false }));
ws.on('open', function open() {
console.log('connected');
});
ws.on('close', function close() {
console.log('disconnected');
});
ws.on('message', function incoming(data) {
console.log('Got data from server:');
console.log(data);
});
app.post('/my-http-endpoint', function (req, res) {
var payload = JSON.stringify({ body: req.body, requestID: uuid.v4() });
ws.send(Buffer.from(payload));
// How to send a reply?
})
app.listen(1337);
【问题讨论】: