Skip to content

JSON-socket client & server implementation. Inspired by and compatible with sebastianseilund/node-json-socket

License

Notifications You must be signed in to change notification settings

foi/crystal-json-socket

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

crystal json-socket master branch

JSON-socket client & server implementation. Inspired by and compatible with sebastianseilund/node-json-socket and ruby json-socket

Installation

Add this to your application's shard.yml:

dependencies:
  json-socket:
    github: foi/crystal-json-socket

Usage

server.cr

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

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

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

About

JSON-socket client & server implementation. Inspired by and compatible with sebastianseilund/node-json-socket

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published