Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/status-im/nim-websock
Websocket for Nim
https://github.com/status-im/nim-websock
nim nim-lang websockets
Last synced: about 2 months ago
JSON representation
Websocket for Nim
- Host: GitHub
- URL: https://github.com/status-im/nim-websock
- Owner: status-im
- Created: 2020-12-01T12:41:57.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T08:41:39.000Z (2 months ago)
- Last Synced: 2024-10-29T09:55:21.347Z (2 months ago)
- Topics: nim, nim-lang, websockets
- Language: Nim
- Homepage:
- Size: 32.6 MB
- Stars: 82
- Watchers: 19
- Forks: 15
- Open Issues: 15
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
- awesome-nim - websock - An implementation of the WebSocket protocol for Nim. (Web / Protocols)
README
# Websocket for Nim
[![GH Action](https://github.com/status-im/nim-websock/actions/workflows/ci.yml/badge.svg)](https://github.com/status-im/nim-websock/actions/workflows/ci.yml)
This is an implementation of [Websocket](https://tools.ietf.org/html/rfc6455) protocol for
[Nim](https://nim-lang.org/) and [chronos](https://github.com/status-im/nim-chronos/).`nim-websock` includes both client and server in regular ws and wss(secure) mode.
It also pass all autobahn tests [Autobahn summary report](https://status-im.github.io/nim-websock/).
Building and testing
--------------------Install dependencies:
```bash
nimble install -d
```Starting HTTP server:
```bash
nim c -r examples/server.nim
```Testing Server Response:
```bash
curl --location --request GET 'http://localhost:8888'
```Testing Websocket Handshake:
```bash
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
- [x] Framing
- [x] Text Messages
- [x] Binary Messages
- [x] Pings/Pongs
- [x] Reserved Bits
- [x] Opcodes
- [x] Non-control Opcodes
- [x] Control Opcodes
- [x] Fragmentation
- [x] UTF-8 Handling
- [x] Close Handling
- [x] Basic close behavior
- [x] Close frame structure
- [x] Payload length
- [x] Valid close codes
- [x] Invalid close codes
- [x] Integrate Autobahn Test suite.
- [x] WebSocket Compression
- [x] WebSocket Extensions
- [ ] Performance