konnectjs
v0.2.1
Published
An abstraction of node-connections structure, which designed especially for keep-in-connection scene. can seamlessly switch protocols with: tcp udp ws polling sse http3 kcp, etc...
Downloads
3
Maintainers
Readme
An extremely flexible abstraction of node-connections structure, which designed for keep-in-connection using, can be fit with any type of network protocol
this work is still in progress.
Installation
or install from npmjs:
> npm i -S konnectjs
in editor:
import { Knode,Konnection } from 'KonnectJS'
Basic Usage
Start A WebSocket Server
the code below illustrates how a websocket server is created:
import { Knode,Konnection } from 'konnectjs'
import { WebSocketBroker } from 'konnect-ws'
let node = new Knode()
.setBroker(new WebSocketBroker({ port:3000, isPublic:true })) // Immediately listen on 3000, and communicate with websocket
.use(()=>ctx=>{
console.log("websocket message", ctx.eventType, ctx.dataIn)
})
Start A Tcp Server
the code below illustrates how a tcp server is created:
import { Knode,Konnection } from 'konnectjs'
import { TcpBroker } from 'konnect-tcp'
let node = new Knode()
.setBroker(new TcpBroker({ port:3000, isPublic:true })) // now it's upon TCP
.use(()=>ctx=>{
console.log("tcp data", ctx.eventType, ctx.dataIn)
})
Hybrid Server
the code below illustrates how a server accepting either WebScoket or TCP connections!
import { Knode,Konnection } from 'konnectjs'
import { TcpBroker } from 'konnect-tcp'
import { WebSocketBroker } from 'konnect-ws'
let wsNode = new Knode() // websocket
.setBroker(new WebSocketBroker({ port:3000, isPublic:true }))
.use(()=>(ctx,next)=>{
console.log("raw WebSocket",ctx.eventType)
next()
})
.to(()=>endNode) // continue with endNode
let tcpNode = new Knode() // tcp
.setBroker(new TcpBroker({ port:3000, isPublic:true }))
.use(()=>(ctx,next)=>{
console.log("raw TCP",ctx.eventType)
next()
})
.to(()=>endNode) // continue with endNode
let endNode = new Knode()
.use(()=>(ctx)=>{
// both TCP and WS events are redirected here
console.log("application event",ctx.eventType)
ctx.send(ctx.dataIn) // send back
})
Documentation
See full document here
there are alse samples here:
- chat - a simple chat room with websock server and client
- switch_protocols - a chat room, but can swtich with varied protocols
- chat2 - a chat room, but with packet split, autoreconnect, heartbeat strategies
- simple - a simple transmitter between knodes
see step-by-step tutorial here