Websocket api与无服务器框架BlitzJs?

问题描述

我正在为我的应用程序使用无服务器框架Blitz.js。但是,现在我想实现一个通知系统,以便将任何更新通知用户。由于Blitz.js是无服务器的,因此我不确定如何继续。

对于开放式问题的道歉,但是,我想知道是否存在实现Web-Socket的方法/指南或某种轮询来通知用户

第二,如何将后端服务器与Blitz等无服务器框架集成在一起。

更新:(分享我的想法)

我看到的方式是该系统可以像以下那样工作。前端与无服务器之间的无服务器通信将继续进行,现在,后端服务器(如果确实需要通知/轮询)将与无服务器进行通信并将其转发到前端。

enter image description here

解决方法

WebSockets是浏览器驻留代码与服务器建立持久连接的一种方式。因此,您正在做一些有点奇怪的事情,并且肯定是尝试将其与无服务器框架一起使用的先驱。

但是,WebSocket连接 是http(或https)连接。因此,如果无服务器实例在关闭所有连接之前一直存在,那么可以想象用户浏览器与无服务器实例之间将建立连接。如果您可以使用闪电战服务器端代码中的server对象,则可以使用npm ws来设置WebSocket侦听器。

const requestIp = require( 'request-ip' )
const ws = require('ws' )

...

const wss = new ws.Server({ server });
wss.on('connection',function connection(ws,request) {
  const url = new URL( request.url,'wss://example.com',true )
  const path = url.pathname
  const clientIp = requestIp.getClientIp( request )
  console.log ('connected to: %s from %s',path,clientIp) 

  ws.on('message',function incoming(message) {
    console.log('received: %s from %s',message,clientIp);
  })

  ws.on('close',function close (code,reason) {
  console.log ('closed: %s from %s',reason,clientIp) 
  })
 
  ws.send('something');
});