如何在环回 4 的 RestApplication 中使用 socket.io?

Posted

技术标签:

【中文标题】如何在环回 4 的 RestApplication 中使用 socket.io?【英文标题】:How to use socket.io in RestApplication of loopback 4? 【发布时间】:2019-12-04 05:31:44 【问题描述】:

我在 Loopback 4 中创建了我的 rest 应用程序,现在我想在其中实现套接字。 RestApplication有什么办法吗?

export class MyApplication extends BootMixin(
    ServiceMixin(RepositoryMixin(RestApplication)),
) 

    constructor(
        options: ApplicationConfig = 
    ) 
        super(options);
    

    ....

    async start() 
        await super.start();

        const io = socketio(this.restServer);
        io.on('connection', (socket: any) => 
            console.log('connected');
        );

    

const io = socketio(this.restServer); 不适合我

【问题讨论】:

您找到解决问题的方法了吗? 【参考方案1】:

这是一个带有 socket.io 集成的官方 Loopback 4 示例。创建此示例是为了探索如何与 LoopBack 控制器一起公开 Websocket (socket.io) 端点。

https://github.com/raymondfeng/loopback4-example-websocket

【讨论】:

你提到的例子是使用HttpServer类实现的,但是我的应用程序使用了RestApplication类和restServer,所以我现在的项目中无法使用它。【参考方案2】:

我已经在 Loopback 4 中创建了我的 REST 应用程序,现在我想在其中实现套接字。

您的需求是什么?客户A成功调用一个REST API后,这个调用的结果会通过websocket发送到指定的客户端吗?

你可以在application.ts(how to creat websocket server)同时创建rest server和websocket server。然后你可以创建Interceptor,在每个控制器方法被调用后通过websocket发送消息。

【讨论】:

以上是关于如何在环回 4 的 RestApplication 中使用 socket.io?的主要内容,如果未能解决你的问题,请参考以下文章

如何在环回中自动跳过访问令牌验证

如何接收 Post 请求正文并将该正文传递给我在环回中的函数

CAN 1 RX 在环回模式下工作,但不在正常模式下

ECDHE密码套件在环回连接上失败握手?

环回上的 WebSocket:MS Edge 上不允许跨区域连接错误

Loopback 4 调试器 nodemon 解决方案