diff --git a/shard.lock b/shard.lock index 5f0a293..f7c87f9 100644 --- a/shard.lock +++ b/shard.lock @@ -2,9 +2,13 @@ version: 1.0 shards: kemal: github: sdogruyol/kemal - version: 0.8.0 + version: 0.12.0 + + kilt: + github: jeromegn/kilt + version: 0.3.3 radix: github: luislavena/radix - version: 0.1.0 + version: 0.3.0 diff --git a/shard.yml b/shard.yml index e407d85..3ad0c97 100644 --- a/shard.yml +++ b/shard.yml @@ -4,6 +4,7 @@ version: 0.1.0 dependencies: kemal: github: sdogruyol/kemal + version: 0.12.0 authors: - Fatih Kadir Akın diff --git a/src/app.cr b/src/app.cr index 1d2e973..c183f04 100644 --- a/src/app.cr +++ b/src/app.cr @@ -11,10 +11,21 @@ end ws "/" do |socket| sockets.push socket + socket.on_message do |message| messages.push message sockets.each do |a_socket| - a_socket.send messages.to_json + begin + a_socket.send messages.to_json + rescue ex + sockets.delete a_socket + end end end + + socket.on_close do |socket| + sockets.delete socket + end end + +Kemal.run diff --git a/src/assets/javascripts/main.js b/src/assets/javascripts/main.js index 5c540a4..b9c43fe 100644 --- a/src/assets/javascripts/main.js +++ b/src/assets/javascripts/main.js @@ -2,6 +2,20 @@ function random(min, max) { return Math.floor(Math.random()*(max-min+1)+min); } +function setCurrentTime() { + var currentTime = new Date() + var hours = currentTime.getHours() + var minutes = currentTime.getMinutes() + + if (minutes < 10) { + minutes = "0" + minutes + } + + var timePeriod = hours > 11 ? "PM" : "AM" + + return hours+":"+minutes + " " + timePeriod +} + var Chat = React.createClass({ getInitialState: function () { @@ -64,7 +78,7 @@ var Chat = React.createClass({ var color = user[1]; var name = user[0]; return React.createElement("li", null, - React.createElement('span', {style: {color: color}}, name+": "), + React.createElement('span', {style: {color: color}}, name+"["+setCurrentTime()+"]: "), React.createElement('span', null, parts.slice(1).join(":").trim()) ); });