hapijs / nes

WebSocket adapter plugin for hapi routes
Other
502 stars 87 forks source link

Polling option fallback #320

Open CarolineBoyer opened 2 years ago

CarolineBoyer commented 2 years ago

Support plan

Context

How can we help?

I looked at docs, as ell as open/closed issue using the 'polling' keyword and couldn't find how to add a polling fallback on hapijs such as this exists on library like socket.io. We would want to use the publish/subscribe method as well as the hapiJS request with 'post/get' method.

/**CLIENT CODE connection **/
return this.socketClient.connect({
    reconnect: true,    //whether the client should try to reconnect
    delay: 2000,        //time in milliseconds to wait between each reconnection attempt, cumulative
    maxDelay: 15000,    //the maximum delay time in milliseconds between reconnections
    retries: 10     //number of reconnection attempts
})
/** SERVER REGISTER **/
await server.register(
  {
    plugin: Nes,
    options: {
      heartbeat: {
        interval: 15000,
        timeout: 5000
      },
      auth: false
    }
  },
  {
    routes: process.env.ROOT_PATH ? {
      prefix: ROOT_PATH
    } : {}
  }
);

Is such a thing possible using hapiJS/nes ? Or is there another plugin we need to register to instead that would work like hapiJS/nes but with polling experience ?

My dearest apologies for doubling this in hapi ( https://github.com/hapijs/hapi/issues/4287 ), I realized after posting, this was more relevant to hapijs/nes and not hapijs as a whole.

devinivy commented 2 years ago

Hello! There is no long-polling functionality that goes along with nes. You may be interested in susie, which has some similarities to nes but uses server-sent events rather than websockets. That isn't long-polling either, but it's a bit closer! Socket.io can also be used with hapi servers, though you wouldn't get the tight integration with hapi routes and authentication that nes provides.

If you're interested in charting the path to supporting long-polling in nes, a proposal for how that would work would be welcome!