Error during connection

This commit is contained in:
Daniel Flanagan 2021-11-16 23:47:59 -06:00
parent ff009674bb
commit aad8b99dc1
Signed by: lytedev
GPG key ID: 5B2020A0F9921EF4
2 changed files with 48 additions and 44 deletions

View file

@ -4,7 +4,7 @@ const MultiplayerClient = preload("multiplayer_client.gd")
onready var client = MultiplayerClient.new() onready var client = MultiplayerClient.new()
const MULTIPLAYER_URL = "ws://localhost:9080" const MULTIPLAYER_URL = "wss://webrtc-signaller.deno.dev/"
func _ready(): func _ready():
client.connect("lobby_joined", self, "_lobby_joined") client.connect("lobby_joined", self, "_lobby_joined")

View file

@ -216,50 +216,54 @@ for await (const conn of server) {
const httpConn = Deno.serveHttp(conn); const httpConn = Deno.serveHttp(conn);
for await (const requestEvent of httpConn) { for await (const requestEvent of httpConn) {
if (requestEvent) { if (requestEvent) {
const { socket, response } = Deno.upgradeWebSocket( try {
requestEvent.request, const { socket, response } = Deno.upgradeWebSocket(
); requestEvent.request,
const id = randomId();
const peer = new Peer(id, socket);
socket.onopen = (_ev) => {
if (peersCount >= MAX_PEERS) {
socket.close(4000, STR_TOO_MANY_PEERS);
return;
}
peersCount++;
};
socket.onmessage = (ev) => {
try {
parseMsg(peer, ev.data);
} catch (e) {
const code = e.code || 4000;
console.log(`Error parsing message from ${id}:\n` + ev.data);
socket.close(code, e.message);
}
};
socket.onclose = (ev) => {
peersCount--;
console.log(
`Connection with peer ${peer.id} closed ` +
`with reason: ${ev.reason}`,
); );
if ( const id = randomId();
peer.lobby && const peer = new Peer(id, socket);
lobbies.has(peer.lobby) && socket.onopen = (_ev) => {
lobbies.get(peer.lobby).leave(peer) if (peersCount >= MAX_PEERS) {
) { socket.close(4000, STR_TOO_MANY_PEERS);
lobbies.delete(peer.lobby); return;
console.log(`Deleted lobby ${peer.lobby}`); }
console.log(`Open lobbies: ${lobbies.size}`); peersCount++;
peer.lobby = ""; };
} socket.onmessage = (ev) => {
if (peer.timeout >= 0) { try {
clearTimeout(peer.timeout); parseMsg(peer, ev.data);
peer.timeout = -1; } catch (e) {
} const code = e.code || 4000;
}; console.log(`Error parsing message from ${id}:\n` + ev.data);
socket.onerror = (e) => console.error("WebSocket error:", e); socket.close(code, e.message);
requestEvent.respondWith(response); }
};
socket.onclose = (ev) => {
peersCount--;
console.log(
`Connection with peer ${peer.id} closed ` +
`with reason: ${ev.reason}`,
);
if (
peer.lobby &&
lobbies.has(peer.lobby) &&
lobbies.get(peer.lobby).leave(peer)
) {
lobbies.delete(peer.lobby);
console.log(`Deleted lobby ${peer.lobby}`);
console.log(`Open lobbies: ${lobbies.size}`);
peer.lobby = "";
}
if (peer.timeout >= 0) {
clearTimeout(peer.timeout);
peer.timeout = -1;
}
};
socket.onerror = (e) => console.error("WebSocket error:", e);
requestEvent.respondWith(response);
} catch (e) {
console.log(`Error during connection:`, e);
}
} }
} }
})(); })();