1
0
mirror of https://github.com/schollz/cowyo.git synced 2023-08-10 21:13:00 +03:00
cowyo/static/js/websockets.js
Zack Scholl 32d0d2ca6c Updated - websocket switches with SSL
Automatic detection of IP address (for local only)
Added binary building (not ready)


Former-commit-id: 7729b642f8489c631e614b0e1190a9e6eb387443 [formerly 375f6ae8a94b41342555065ac0e35f436e338a5f] [formerly 08e05a2c6c93ad9e1db26f047951278068271f7f [formerly b549a7f6efcaedee78a5e0d74777099abf6fbb07 [formerly f934edc757]]]
Former-commit-id: cd3c0e21fbd07389ca6eba5795ed4207dd7f474d [formerly c21027b049a07d1d906d8340e64cf3da73a8fe3f]
Former-commit-id: afa01eda756447cba035f4e1c40c71be3001979a
Former-commit-id: 2a41a03b5c
2016-02-15 16:59:32 -05:00

77 lines
2.5 KiB
JavaScript

$(document).ready(function() {
var isTyping = false;
var typingTimer; //timer identifier
var updateInterval;
var uhohTimer;
var doneTypingInterval = 500; //time in ms, 5 second for example
var pollToGetNewestCopyInterval = 10000;
//on keyup, start the countdown
$('#emit').keyup(function() {
clearTimeout(typingTimer);
clearInterval(updateInterval);
$('#saveInfo').removeClass().addClass("glyphicon glyphicon-floppy-remove");
typingTimer = setTimeout(doneTyping, doneTypingInterval);
});
//on keydown, clear the countdown
$('#emit').keydown(function() {
clearTimeout(typingTimer);
clearInterval(updateInterval);
$('#saveInfo').removeClass().addClass("glyphicon glyphicon-floppy-remove");
document.title = "[UNSAVED] " + title_name;
});
//user is "finished typing," do something
function doneTyping() {
payload = JSON.stringify({ TextData: $('#emit_data').val(), Title: title_name, UpdateServer: true, UpdateClient: false })
send(payload)
uhohTimer = setTimeout(uhoh, 3000);
$('#saveInfo').removeClass().addClass("glyphicon glyphicon-floppy-open");
console.log("Done typing")
updateInterval = setInterval(updateText, pollToGetNewestCopyInterval);
document.title = "[SAVED] " + title_name;
}
function uhoh() {
$('#saveInfo').removeClass().addClass("glyphicon glyphicon-remove");
setInterval(location.reload(), 1000);
}
function updateText() {
console.log("Getting server's latest copy")
payload = JSON.stringify({ TextData: $('#emit_data').val(), Title: title_name, UpdateServer: false, UpdateClient: true })
send(payload)
}
// websockets
url = socketType + '://'+external_ip+'/ws';
c = new WebSocket(url);
send = function(data){
console.log("Sending: " + data)
c.send(data)
}
c.onmessage = function(msg){
console.log(msg)
data = JSON.parse(msg.data);
if (data.UpdateClient == true) {
console.log("Updating...")
$('#emit_data').val(data.TextData)
document.title = "[LOADED] " + title_name;
}
console.log((data.TextData == "saved"))
console.log(data.TextData)
if (data.TextData == "saved") {
$('#saveInfo').removeClass().addClass("glyphicon glyphicon-floppy-saved");
clearTimeout(uhohTimer);
}
console.log(data)
}
c.onopen = function(){
// updateText();
updateInterval = setInterval(updateText, pollToGetNewestCopyInterval);
}
});