Просмотр исходного кода

hello, babl.

babbling: the basics.
Lucas Stadler лет назад: 11
Родитель
Сommit
4e5c7df470
4 измененных файлов с 89 добавлено и 0 удалено
  1. 1 0
      js/babl/.gitignore
  2. 54 0
      js/babl/index.html
  3. 8 0
      js/babl/package.json
  4. 26 0
      js/babl/server.js

+ 1 - 0
js/babl/.gitignore

@ -0,0 +1 @@
1
/node_modules

+ 54 - 0
js/babl/index.html

@ -0,0 +1,54 @@
1
<!doctype html>
2
<html>
3
	<head>
4
		<title>babl</title>
5
		<meta charset="utf-8" />
6
	</head>
7
8
	<body>
9
		<div id="messages">
10
		</div>
11
		<input id="input" type="text" placeholder="Say something..." />
12
13
		<script>
14
			var messagesEl = document.getElementById("messages");
15
			var inputEl = document.getElementById("input");
16
17
			var ws = new WebSocket("ws://localhost:8080");
18
19
			inputEl.onkeyup = function(ev) {
20
				if (ev.keyCode == 13) {
21
					sendMessage(inputEl.value);
22
					inputEl.value = "";
23
				}
24
			}
25
26
			function displayMessage(msg) {
27
				var msgEl = document.createElement("pre");
28
				var msgDate = new Date(msg.timestamp);
29
				msgEl.textContent = msgDate.toLocaleTimeString() + " - " + msg.author + ": " + msg.content;
30
				messagesEl.appendChild(msgEl);
31
			}
32
33
			ws.onmessage = function(ev) {
34
				var msg = JSON.parse(ev.data);
35
				switch (msg.type) {
36
					case "message":
37
						displayMessage(msg);
38
						break;
39
					default:
40
						console.warn("unkown message type: " + msg.type);
41
				}
42
			}
43
44
			function sendMessage(msg) {
45
				var msg = {
46
					type: "message",
47
					content: msg
48
				};
49
				console.log("sending: ", msg);
50
				ws.send(JSON.stringify(msg));
51
			}
52
		</script>
53
	</body>
54
</html>

+ 8 - 0
js/babl/package.json

@ -0,0 +1,8 @@
1
{
2
  "name": "babl",
3
  "version": "0.0.0-alpha",
4
  "description": "a simple web-chat using websocket",
5
  "dependencies": {
6
    "ws": "0.4.31"
7
  }
8
}

+ 26 - 0
js/babl/server.js

@ -0,0 +1,26 @@
1
var ws = require('ws');
2
3
var wss = new ws.Server({port: 8080});
4
5
wss.on('connection', function(ws) {
6
	var name = randomName();
7
8
	ws.on('message', function(msg) {
9
		var msg = JSON.parse(msg);
10
		msg.author = name;
11
		msg.timestamp = Date.now();
12
13
		wss.clients.forEach(function(sock) {
14
			sock.send(JSON.stringify(msg));
15
		});
16
	});
17
});
18
19
function randomName() {
20
	var name = "";
21
	var a = "a".charCodeAt(0);
22
	for (var i = 0; i < 8; i++) {
23
		name += String.fromCharCode(a + Math.random() * 26);
24
	}
25
	return name;
26
}