Network
You can pick existing network connector or write your own
Overview
| Network type | Supports onion routing | Description | 
| Bun (local) | ❌ | This network type is default and simpliest. It is intended to be used in the same process that @session.js/client instances run in. It's ideal if you just want to start and doing everything on server in one project without browser or other parts. | 
| Bun (remote) for proxies | ❌ | This network might be useful if you're building client in environment that does not allow you sending requests to Session nodes with self-signed certificates. This option is ideal for browser clients, because it handles all network connection on backend proxy that forwards client-side encrypted data to snodes. Check out simple browser example here. | 
Creating new network connector
To implement your own network, write class that implements Network interface from @session.js/types/network with onRequest method. It must cover all RequestTypes from @session.js/types/network/request. Take a look at this example:
import type { Network } from '@session.js/types'
import { 
  RequestType, 
  type RequestGetSwarmsBody, 
  type RequestPollBody, 
  type RequestStoreBody, 
  type RequestUploadAttachment 
} from '@session.js/types/network/request'
export class MyNetwork implements Network {
  onRequest(type: RequestType, body: object): Promise<object> {
    switch(type) {
      case RequestType.Store:
        return // typeof ResponseStore
      case RequestType.GetSnodes:
        return // typeof ResponseGetSnodes
      case RequestType.GetSwarms:
        return // typeof ResponseGetSwarms
      case RequestType.Poll:
        return // typeof ResponsePoll
      case RequestType.UploadAttachment:
        return // typeof ResponseUploadAttachment
      case RequestType.DownloadAttachment:
        return // typeof ArrayBuffer
      default:
        throw new Error('Invalid request type')
    }
  }
}
This is just an example in documentation, always develop against actual up-to-date RequestTypes enum in types package.