-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchat.js
More file actions
88 lines (76 loc) · 1.83 KB
/
chat.js
File metadata and controls
88 lines (76 loc) · 1.83 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
$(document).ready(function() {
});
var socket = null;
function send(data, newCallback) {
try {
if (socket != null)
socket.send(data);
} catch (exc) {
console.log("send error: " + exc);
}
}
function initializeSocket(callback) {
socket = new WebSocket("ws://zebfross.com:8080/");
if (socket) {
socket.onopen = callback;
socket.onmessage = function(msg) {
console.log(msg.data);
var message = JSON.parse(msg.data);
if (message.method == "getUsers") {
refreshUsers(message.data);
} else if (message.method == "getMessages") {
appendMessages(message.data);
} else {
console.log("unknown method: " + message.method);
}
};
socket.onerror = function(error) {
console.log("socket error: " + error);
$("#socketError").removeClass("hidden");
}
socket.onclose = function() {
console.log("socket closed");
}
}
}
function registerClient() {
if (socket == null) {
initializeSocket(registerClient);
return;
}
user = new User({"nick":$("#nick").val()});
call = {"method":"registerClient", "data":user};
send(JSON.stringify(call));
}
function getUsers() {
call = {"method":"getUsers"};
send(JSON.stringify(call));
}
function refreshUsers(users) {
$("#users").empty();
var noUsers = true;
for(nick in users) {
$("#users").append("<li>" + nick + "</li>");
noUsers = false;
}
if (noUsers) {
$("#userAlert").html("There are currently no users online");
} else {
$("#userAlert").html("");
}
}
function sendMessage() {
call = {"method":"sendMessage"};
call.data = {"message": $("#message").val()};
send(JSON.stringify(call));
}
function appendMessages(chats) {
var ta = document.getElementById("messages");
for (c in chats) {
var chat = chats[c];
ta.value += "\n";
ta.value += chat.user + ": ";
ta.value += chat.message + "\n";
}
$("#messages").scrollTop($("#messages").height());
}