repo_description: Actionhero is a realtime multi-transport nodejs API Server with integrated cluster capabilities and delayed tasks
repo_topics: actionhero api api-server async-await cluster delayed-jobs delayed-tasks framework frameworks http https javascript nodejs server socket-client tcp ts typescript websocket
code: // Note that to use the websocket server, you also need the web server enabled
  
  import { ActionheroConfigInterface } from "..";
  
  const namespace = "websocket";
  
  declare module ".." {
    export interface ActionheroConfigInterface {
      [namespace]: ReturnType<(typeof DEFAULT)[typeof namespace]>;
    }
  }
  
  export const DEFAULT = {
    [namespace]: (config: ActionheroConfigInterface) => {
      return {
        enabled: true,
        // you can pass a FQDN (like https://company.com) here or 'window.location.origin'
        clientUrl: "window.location.origin",
        // Directory to render client-side JS.
        // Path should start with "/" and will be built starting from api.config..general.paths.public
        clientJsPath: "javascript/",
        // the name of the client-side JS file to render.  Both `.js` and `.min.js` versions will be created
        // do not include the file extension
        // set to `undefined` to not render the client-side JS on boot
        clientJsName: "ActionheroWebsocketClient",
        // should the server signal clients to not reconnect when the server is shutdown/reboot
        destroyClientsOnShutdown: false,
  
        // websocket Server Options:
        server: {
          // authorization: null,
          // pathname:      '/primus',
          // parser:        'JSON',
          // transformer:   'websockets',
          // plugin:        {},
          // timeout:       35000,
          // origins:       '*',
          // methods:       ['GET','HEAD','PUT','POST','DELETE','OPTIONS'],
          // credentials:   true,
          // maxAge:        '30 days',
          // exposed:       false,
        },
  
        // websocket Client Options:
        client: {
          apiPath: "/api", // the api base endpoint on your actionhero server
          // the cookie name we should use for shared authentication between WS and web connections
          cookieKey: config.web.fingerprintOptions.cookieKey,
          // reconnect:        {},
          // timeout:          10000,
          // ping:             25000,
          // pong:             10000,
          // strategy:         "online",
          // manual:           false,
          // websockets:       true,
          // network:          true,
          // transport:        {},
          // queueSize:        Infinity,
        },
      };
    },
  };
  