gamnit :: RemoteClient :: handshake
# Check for compatibility with the client
fun handshake: Bool
do
print "Server: Handshake initiated by {socket.address}"
# Make sure it is the same app
var server_app = sys.handshake_app_name
var client_app = socket.deserialize_msgpack
if server_app != client_app then
print_error "Server Error: Client app name is '{client_app or else "<invalid>"}'"
# Send an empty string so the client read it and give up
socket.serialize_msgpack ""
socket.close
return false
end
socket.serialize_msgpack server_app
# App version
var app_version = sys.handshake_app_version
var client_version = socket.deserialize_msgpack
if client_version != app_version then
print_error "Handshake Error: client version is different '{client_version or else "<invalid>"}'"
socket.serialize_msgpack ""
socket.close
return false
end
socket.serialize_msgpack app_version
return true
end
lib/gamnit/network/server.nit:178,2--210,4