ipcd/src/ws.cr

39 lines
663 B
Crystal

require "http"
require "http/web_socket/protocol"
class WebSocket < HTTP::WebSocket
getter? closed = false
def read
size = 0
begin
info = @ws.receive(@buffer)
size = info.size
rescue IO::EOFError
close
return nil
end
case info.opcode
when Protocol::Opcode::TEXT
return @buffer[0..size-1]
when Protocol::Opcode::BINARY
return @buffer[0..size-1]
when Protocol::Opcode::CLOSE
begin
close
rescue e
puts "\033[31mwebsocket failed to close properly\033[00m #{e}"
end
return nil
end
end
def finalize
# puts "WrappedTCPFileDescriptor garbage collection!!"
# super
end
end