Websocket for Nim
Go to file
Jacek Sieka af8779d9d9
Note that chronos is required
2022-08-16 13:17:58 +02:00
.github/workflows
autobahn
examples
tests --styleCheck:error (#122) 2022-07-21 15:38:13 +00:00
websock --styleCheck:error (#122) 2022-07-21 15:38:13 +00:00
.editorconfig
.gitattributes
.gitignore
Readme.md Note that chronos is required 2022-08-16 13:17:58 +02:00
config.nims
nim.cfg
nimble.lock
websock.nimble --styleCheck:error (#122) 2022-07-21 15:38:13 +00:00
websock.svg

Readme.md

Websock Logo

Websocket for Nim

Github action

This is an implementation of Websocket protocol for Nim and chronos.

nim-websock includes both client and server in regular ws and wss(secure) mode.

It also pass all autobahn tests Autobahn summary report.

Building and testing

Install dependencies:

nimble install -d

Starting HTTP server:

nim c -r examples/server.nim

Testing Server Response:

curl --location --request GET 'http://localhost:8888'

Testing Websocket Handshake:

curl --include \
   --no-buffer \
   --header "Connection: Upgrade" \
   --header "Upgrade: websocket" \
   --header "Host: example.com:80" \
   --header "Origin: http://example.com:80" \
   --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
   --header "Sec-WebSocket-Version: 13" \
   http://localhost:8888/ws

Roadmap

  • Framing
    • Text Messages
    • Binary Messages
  • Pings/Pongs
  • Reserved Bits
  • Opcodes
    • Non-control Opcodes
    • Control Opcodes
  • Fragmentation
  • UTF-8 Handling
  • Close Handling
    • Basic close behavior
    • Close frame structure
    • Payload length
    • Valid close codes
    • Invalid close codes
  • Integrate Autobahn Test suite.
  • WebSocket Compression
  • WebSocket Extensions
  • Performance