首页 > 解决方案 > 具有无服务器框架(BlitzJs)的 Websocket api?

问题描述

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

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

其次,如何将后端服务器与 Blitz 等无服务器框架集成。

更新:(分享我的想法)

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

在此处输入图像描述

标签: javascriptwebsocketnotificationsserverlesspolling

解决方案


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

但是,WebSocket 连接http(或 https)连接。因此,如果您的无服务器实例一直持续到所有连接都关闭,您可以想象在用户的浏览器和无服务器实例之间建立连接。如果您可以server在 blitz 服务器端代码中获得对象,则可以使用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');
});

推荐阅读