https://github.com/joffrey-bion/socketio-kotlin
A Kotlin parser for Socket.IO / Engine.IO packet decoding
https://github.com/joffrey-bion/socketio-kotlin
kotlin multiplatform multiplatform-kotlin-library socketio
Last synced: 5 months ago
JSON representation
A Kotlin parser for Socket.IO / Engine.IO packet decoding
- Host: GitHub
- URL: https://github.com/joffrey-bion/socketio-kotlin
- Owner: joffrey-bion
- License: mit
- Created: 2023-07-17T14:20:09.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-01-23T20:45:49.000Z (5 months ago)
- Last Synced: 2025-01-23T21:29:25.935Z (5 months ago)
- Topics: kotlin, multiplatform, multiplatform-kotlin-library, socketio
- Language: Kotlin
- Homepage:
- Size: 380 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# socketio-kotlin
[](https://search.maven.org/artifact/org.hildan.socketio/socketio-kotlin)
[](https://github.com/joffrey-bion/socketio-kotlin/actions/workflows/build.yml)
[](https://github.com/joffrey-bion/socketio-kotlin/blob/main/LICENSE)A Kotlin parser for Socket.IO / Engine.IO packet decoding
## Setup
Add the dependency:
```kotlin
dependencies {
implementation("org.hildan.socketio:socketio-kotlin:$version")
}
```## Usage
```kotlin
val encodedTextPacket: String = TODO("get an encoded packet, for instance a web socket frame body")val engineIOPacket = EngineIO.decodeSocketIO(encodedTextPacket)
when (engineIOPacket) {
is EngineIOPacket.Open,
is EngineIOPacket.Close,
is EngineIOPacket.Upgrade,
is EngineIOPacket.Noop,
is EngineIOPacket.Ping,
is EngineIOPacket.Pong -> TODO("process transport Engine.IO packet")
is EngineIOPacket.Message -> when (val socketIOPacket = engineIoPacket.payload) {
is SocketIOPacket.Connect,
is SocketIOPacket.ConnectError,
is SocketIOPacket.Disconnect -> TODO("process transport Socket.IO packet")
is SocketIOPacket.Event,
is SocketIOPacket.Ack -> {
val namespace = socketIOPacket.namespace
val eventType = socketIOPacket.payload[0].jsonPrimitive.content
val eventPayload = socketIOPacket.payload[1].jsonObject
println("Received Socket.IO event $eventType at $namespace: $eventPayload")
}
}
}
```