webForumDet fria alternativet

js grunder och lite websockets

JavaScript

4 svar · 763 visningar · startad av evilaid

Medlem sedan apr. 2009433 inlägg
Frågan#1

Okej.
Hej på er..

Antar att man kanske borde kunna detta men jag behöver lite förklaring hur koden fungerar..

Jag använder Html5 och vill kontrollera om det finns en internetanslutning tillgänglig, tänkte göra detta med websockets.. Detta är inte mitt första problem utan istället att förstå js koden...
Exempelvis denna raden.

connection.onerror = function (error) {
  console.log('WebSocket Error ' + error);

alltså i ovan då, här tilldelar man, är det ett event som tilldelas en funktion, alltså när eventet "onerror" sker så anropas funktion, men variabel "error" då, vad har den för värde och hur tilldelas det?

Någon som lan förklara detta för en dummy?

Btw: nedan ser ni hela koden, någon som har erfarenhet av att kolla anslutningen, är detta bästa sättet.. Jag gör en webb app och vill ha en ständig kontroll om det finns internet anslutning tillgänglig?

Ska jag bara lägga till en timer som anropar "connection.onopen" hela tiden eller hur skulle ni gjort??

mvh

var connection = new WebSocket('ws://html5rocks.websocket.org/echo');

// When the connection is open, send some data to the server
connection.onopen = function () {
  connection.send('Ping'); // Send the message 'Ping' to the server
};

// Log errors
connection.onerror = function (error) {
  console.log('WebSocket Error ' + error);
};

// Log messages from the server
connection.onmessage = function (e) {
  console.log('Server: ' + e.data);
};
Medlem sedan juni 20019 519 inlägg
#2

onopen är eventet som ske så fort du få en anslutning, onerror är rätt självförklarande och onmessage är att servern kan skicka svar till klienten (stå ju i kommentarena)

http://dev.w3.org/html5/websockets/

har ett exempel:

var socket = new WebSocket('ws://game.example.com:12010/updates');
socket.onopen = function () {
  setInterval(function() {
    if (socket.bufferedAmount == 0)
      socket.send(getUpdateData());
  }, 50);
};

Vet inte riktigt vad det är för sajt du är ute efter men hade inte manifest fil fungerat för cache vid offline?

Medlem sedan apr. 2009433 inlägg
#3

Grejen är lite så här:

Siten som ska vara till paddor så tänkte jag att man kan fylla i ett formulär och trycka på spara. Finns det ingen ansutningen då så ska det sparas i en databas på paddan (som jag läste om finns till html5)..

Så fort anslutning finns igen så konrolleras det om databasen innehåller något, är det så, så skickas detta till en server (just denna biten blir ett asp script som tar emot)

Jag vet ju att du kan sånt här som rinnande vatten så alla förslag och liknande mottages tacksamt.. Som sagt det skall var så enkelt som möjlight..
- Kolla anslutning, finns ingen spara i databas
- när snalutning finns töm/skcika till ett mottagande asp script..

mvh

Medlem sedan juni 20019 519 inlägg
#4

Nu vet jag inte om du kan köra websocket på din server, men du skulle ju kunna
skulle ju kunna synca datan till en sql lite database din sajt ( http://html5doctor.com/introducing-web-sql-databases/ ) och kolla med ajax(eller offline läge) och om du få en anslutning så börja föra över ändringarna som finns i din lokala databas.

Du skulle nog även kunna använda dig av localstorage också för att lösa det.

Du skulle nog också kunna titta på: https://developer.mozilla.org/en/Online_and_offline_events för att se om man är online/offline, få kanske testa eventet och se hur bra den är för om jag förstod det hela rätt så säger dokumentationen:

navigator.onLine is a property that maintains a true/false value (true for online, false for offline). This property is updated whenever the user switches into "Offline Mode" by selecting the corresponding menu item (File -> Work Offline in Firefox).

Om den nu känner av om du har 3G/ Wifi på din ipad så hade det nog varit en lösning på ditt problem.

Medlem sedan apr. 2009433 inlägg
#5

stort tack för din hjälp..

Jag har faktiskt tittat på navigator.online, verkar klockrent och väldigt enkelt vilket passar mig, precis som du skriver och som någon annan också skrev så är inte det så pålitligt men jag har själv inte testat det än.

jag är inte riktigt med på hur du menar med att synca datan till en sql databas..

Min tanke var igentlgien att använda mig av web sql database på klientsidan (paddan) så att så fort man trycker på spara i formuläret så kontrolleras om det finns någon uppkoppling, finns inte det sparas formulärdatan i databasen i paddan..
I och med funktionen som hela tiden kollar efter anslutning så vill jag att så fort den upptäcker anslutning igen så sätter den ihop ett litet anrop till typ: http://www.server.se/receive.asp?värder1=blabla&värde2=blabla2

Hur är snyggast att skicka detta anropet sen?

Websockets funkar inte på min server, satt och sökte lite på det men hittade inget som passade windows server 2003 och IIS 6..

Nu kanske detta var så du menade?

Tack för tålamodet

/en trög en

369 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
212 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
228 ms — ändringar (db)