-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathchat_server.ts
More file actions
38 lines (30 loc) · 1.08 KB
/
Copy pathchat_server.ts
File metadata and controls
38 lines (30 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { Client, Event, Packet, Server } from "../mods.ts";
async function main() {
const server = new Server({ port: 8080 });
server.on(Event.listen, (server: Deno.Listener) => {
let addr = server.addr as Deno.NetAddr;
console.log(`Server listen ${addr.hostname}:${addr.port}`);
});
server.on(Event.connect, (client: Client) => {
console.log("New Client -", client.info());
server.broadcast(`New client connect ${client.info()}\n`, client);
});
server.on(Event.receive, (client: Client, data: Packet, length: number) => {
let clearLast = data.toString().replace(/\n$/, "");
console.log(`Receive(${length}) -`, clearLast);
if (clearLast === "finish") {
server.close();
} else {
server.broadcast(data.prepend(`From ${client.info()} : `), client);
}
});
server.on(Event.close, (client: Client) => {
console.log("Exit Client -", client.info());
server.broadcast(`Disconnect client ${client.info()}\n`, client);
});
server.on(Event.shutdown, () => {
console.log("Server is shutdown");
});
await server.listen();
}
main();