json-socket
Version, currently master branch1 version
- master branchlatestFeb 5, 2023
github.com/foi/crystal-json-socket
JSON-socket client & server implementation. Inspired by and compatible with sebastianseilund/node-json-socket
14 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
json-socket:
github: foi/crystal-json-socket
branch: mastermaster is a branch, not a release, so this tracks it rather than pinning a version.
Then run:
shards installshard.yml
- Crystal
- no constraint declared
- License
- MIT
- Author
- foi <foi@live.ru>
Dependencies
This version declares no dependencies.
README
# crystal json-socket 
JSON-socket client & server implementation. Inspired by and compatible with [sebastianseilund/node-json-socket](https://github.com/sebastianseilund/node-json-socket/) and
[ruby json-socket](https://github.com/foi/ruby-json-socket)
## Installation
Add this to your application's `shard.yml`:
```yaml
dependencies:
json-socket:
github: foi/crystal-json-socket
```
## Usage
server.cr
```crystal
require "json-socket"
struct CustomJSONSocketServer
include JSONSocket::Server
def on_message(message, socket)
puts message
result = (message["a"].as_i + message["b"].as_i) * message["b"].as_i * message["a"].as_i
self.send_end_message({ :result => result}, socket)
end
# Additionally you can define a custom on_error handler
def on_error(ex)
puts "#{ex.message}"
end
end
server = CustomJSONSocketServer.new("127.0.0.1", 1234) # OR CustomJSONSocketServer.new(unix_socket: "/tmp/json-socket-server.sock", delimeter: "µ")
server.listen
```
client.cr
```crystal
require "json-socket"
to_server = JSONSocket::Client.new(host: "127.0.0.1", port: 1234) # OR JSONSocket::Client.new(unix_socket: "/tmp/json-socket-server.sock", delimeter: "µ")
result = to_server.send({ a: 12, b: 8})
if (result)
puts result
end
```
client.cr with timeouts in seconds
```crystal
require "json-socket"
to_server = JSONSocket::Client.new(host: "127.0.0.1", port: 1234, read_timeout: 10, write_timeout: 5) # OR JSONSocket::Client.new(unix_socket: "/tmp/json-socket-server.sock", delimeter: "µ", read_timeout: 10, write_timeout: 5)
result = to_server.send({ a: 12, b: 8})
if (result)
puts result
end
```
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This branch
- Branch
master- Seen
- Feb 5, 2023
- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/foi/crystal-json-socket
Metadata
- Created
- Aug 13, 2026
- Updated
- Aug 13, 2026
- Synced
- Aug 13, 2026
- Versions
- 1