all repos — wsabi @ c58143fd9c458ad4fbab1cca6b59f0863655afc5

websocket proxy that sends stats to statsd

src/wsabi.nim (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
import ws, asyncdispatch, asynchttpserver

# Global vars
var
  server = newAsyncHttpServer()
  remote: WebSocket

proc connectRemote(host: string) {.async.} =
  remote = await newWebSocket(host)
  echo "connected to remote"

proc sendRemote(ws: WebSocket, data: string) {.async.} =
  await ws.send(data)
  echo await ws.receiveStrPacket()

proc localServer(req: Request) {.async.} =
  var
    ws = await newWebSocket(req)

  await connectRemote("ws://test.ws-benchmark.cometchat-dev.com:7070/ws/")
  try:
    while ws.readyState == Open:
      let packet = await ws.receiveStrPacket()
      echo "local msg: " & packet 
      await sendRemote(remote, packet)
  except WebSocketError:
    echo "client closed socket"


when isMainModule:
  waitFor server.serve(Port(9001), localServer)