TooTallNate / Java-WebSocket

A barebones WebSocket client and server implementation written in 100% Java.
http://tootallnate.github.io/Java-WebSocket
MIT License
10.54k stars 2.58k forks source link

websockets with blackberry #102

Closed riddy closed 12 years ago

riddy commented 12 years ago

hi, first of all thanks for your easy-to-use websocket-server implementation! i have some weird problem while using blackberry devices, maybe its my fault, but i think the problem is sth with the server...

i connect to the server, all goes fine. i got the "sendToAll"-messages,

  Set<WebSocket> con = connections();
  synchronized (con) {
      for (WebSocket c : con) {
          c.send(text);
      }
  } //this works how excepted

but for some reason i cannot receive the messages only for the sendet device

public void onMessage(WebSocket conn, String message) { conn.send("on"); } //never geht the answer

i got no problems on desktop browsers or on ios, only if i use the blackberry (7.0)

some ideas whats going wrong?

Davidiusdadi commented 12 years ago

Your blackberry is not working? Try: http://www.youtube.com/watch?v=kAG39jKi0lI

No seriously, i'd really like to help you but i did not understood your problem yet. Can you connect at all and do you receive any messages at all? And what do you mean by "sendet device"?

Falls du deutschsprachig bist, kannst du es auch gerne auf deusch versuchen...

riddy commented 12 years ago

:-p also: ich verbinde mich, alles tut. wenn ich eine nachrichten an alle sende (getriggert von einem anderen teil der anwendung), kommt diese auf meinem blackberry gerät an. wenn ich aber eine nachricht an den server sende und darauf antworten will (onMessage) dann erhalte ich keine nachricht

Davidiusdadi commented 12 years ago

Dein Server sendet also immer mit sendToAll. Und die Clients senden Nachrichten an den Server, der die dann an alle verteilt. Und alle außer dem blackberry empfangen die Nachrichten...ist das so richtig?

Von was erbst den dein Server? Und bist du auf der aktuellen head revision? Hast du mal überprüft, ob onError auf dem blackberry nicht aufgerufen wird? Du könntest mal Websocket.DEBUG auf true setzen. Dann siehst du wenn Nachrichten reinkommen in der Konsole...

Genaueres kann ich leider momentan noch nicht sagen. Scheint, als müssten wir und weiter rantasten.

riddy commented 12 years ago

im gunde habe ich das chatserver beispiel leicht abgeändert.

die sendToAll messages kommen ebenfalls auf dem blackberry an, bei onMessage möchte ich aber nur dem gesendeten antworten, dies klappt überall außer auf dem blackberry. onerror auf dem gerät wird nicht ausgeführt, ich kann auch weiterhin die toAll messages empfangen, nur eben keine antwort auf meine anfrage via websocket :(

da ich sonst keine probleme habe hätte ich vermutet das blackberry vielleicht eine andere websocket-implementierung verwendet.. aber irgendwie macht es keinen sinn, dass die anderen nachrichten ankommen...

ich schau mir mal die debug-logs an. danke erstmal!

Davidiusdadi commented 12 years ago

Es gibt nur die server und die clientseitige Websocketimplementation gibt, und keinen Code der z.B speziell für eine Plattform wäre.

Aber auch wenn wir jetzt schon auf deutsch schreiben verstehe ich noch absolut nicht was eigentlich nicht geht.

nur eben keine antwort auf meine anfrage via websocket

Wer sendet was Daten an wenn und wer empfängt was nicht?

riddy commented 12 years ago

^^ ich sende eine leeren string via websockets an den server, und erwarte daraufhin eine antwort ("on"). gleichzeitig kann ich serverseitig allen angeschlossenen clients nachrichten senden. das funktioniert überall, nur auf dem blackberry bekomme ich ausschließlich die "on" nachrichten nicht (alles andere funktioniert einwandfrei). ich vermute es liegt an dem leeren string, leider kann ich das gerade nicht testen weil ich das gerät nicht mehr habe.

ich dachte vielleicht hat jemand erfahrungen mit blackberry devices, am server kann es ja eigentlih nicht liegen wenns niergendwo sonst probleme gibt..

Davidiusdadi commented 12 years ago

Ah ok also ich habe zwar gesagt, dass alle Geräte die selbe Implementation benutzen, allerdings können die verschieden Clients verschiedene Protokollversionen benutzen. Und die ganzen mobilen Plattformen sprechen sehr beschränkte und veraltete Dialekte/Drafts des Protokolls.

Es wäre für mich sehr interessant, ob das blackberry Draft_75 oder Draft_76 spricht. Dann könnte ich den Fehler besser finden und fixen. Wenn du Websocket.DEBUG einschaltest wird beim verbinden eine entsprechende Meldung auf dem Server und auf dem Client ausgegeben.

Ich werde auf jeden Fall nochmal untersuchen, ob Leerstings bei einer der alten Draftimplementationen übergangen werden.

riddy commented 12 years ago

genau das war meine idee.

ich kann das leider erst nächste woche wieder testen, aber ich melde mich auf jedenfall nochmal.

riddy commented 12 years ago

aaalsoo: Draft scheint schon 76 zu sein, allerdings ist der Fehler behoben wenn ich irgendein Zeichen zum Server sende. Ich schieb das mal auf eine BlackBerry Eigenheit.. Danke dir aber nochmal!

Do not send empty Strings via BlackBerry devices!