Skip to content

Instantly share code, notes, and snippets.

@adamgotterer
Last active July 23, 2018 15:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adamgotterer/2330b2dd05be28279b9dda0889ec8e91 to your computer and use it in GitHub Desktop.
Save adamgotterer/2330b2dd05be28279b9dda0889ec8e91 to your computer and use it in GitHub Desktop.
Crystal WebSocket Client/Server Ping/Pong
# Client
require "http"
client = HTTP::WebSocket.new(URI.parse("ws://127.0.0.1:9333"))
client.send "ping"
client.on_message do |str|
puts str
client.send "ping"
sleep 1
end
client.on_close do |str|
puts "disconnected"
end
client.run
# Server
require "http/server"
handler = HTTP::WebSocketHandler.new do |session|
puts session
session.on_message do |str|
puts str
session.send("pong")
sleep 1
end
session.on_close do |str|
puts "closed"
puts str
end
end
server = HTTP::Server.new(handler)
puts "Listening on http://0.0.0.0:9333"
server.listen("0.0.0.0", 9333)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment