news

Easy websocket with chronos support

Pure Nim score 30/100 · tests present · docs generated

Summary

Latest Version Unknown
License MIT
CI Status Failing
Downloads 0
Last Indexed 2026-07-21 05:24

Installation

nimble install news
choosenim install news
git clone https://github.com/tormund/news

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
news - - - - - - -

Source

Repository https://github.com/tormund/news
Homepage https://github.com/tormund/news
Documentation View Documentation
Registry Source nimble_official

README

NEWS - Nim Easy WebSocket.

  • Based on https://github.com/treeform/ws
  • Support asyncdispatch and https://github.com/status-im/nim-chronos

Example Echo Server:

Example echo server, will repeat what you send it:

import news, asyncdispatch, asynchttpserver

var server = newAsyncHttpServer()
proc cb(req: Request) {.async.} =
  if req.url.path == "/ws":
    var ws = await newWebsocket(req)
    await ws.send("Welcome to simple echo server")
    while ws.readyState == Open:
      let packet = await ws.receivePacket()
      await ws.send(packet)
  await req.respond(Http200, "Hello World")

waitFor server.serve(Port(9001), cb)

Websocket client

Send messages to Echo server and receive unswer

import news, asyncdispatch

proc sendMsg() {.async.} =
    var ws = await newWebSocket("ws://localhost:9001/ws")
    await ws.send("hi")
    while ws.readyState == Open:
        let packet = await ws.receiveString()
        echo "received ", packet

waitFor sendMsg()

Websocket with chronos support:

import chronos

const newsUseChronos = true
include news

proc sendMsg() {.async.} =
    var ws = await newWebSocket("ws://localhost:9001/ws")
    await ws.send("hi")
    while ws.readyState == Open:
        let packet = await ws.receiveString()
        echo "received ", packet

waitFor sendMsg()

SSL/TLS connection is configured with a different prefix:

Note: not supported for chronos variant

var ws = await newWebSocket("wss://localhost/") # SSL context will be defaulted unless explicitly passed