How to receive and send websocket messages in Java?

Discussion in 'Java' started by Mihael, Mar 7, 2012.

  1. Mihael

    Mihael Guest

    Hello!

    I try to create websocket server on Java

    this is my draft of code http://pastebin.com/k1D46cV7

    i try to connect from Chrome on Mac version 17.0.963.66
    from this test page http://websocket.org/echo.html

    And connection success

    But when i send any data to server, in console on server application i see string like

    БУЭѓчЮ’ ЫттПДÑюƒТкљ№Тмл Е

    how can i decode this string to normal?

    And when i try to send answer from server - client not get message...

    Please, give me code for right receive and decode message and right encode and send message.

    Big thanks :)

    ----

    I found documentation http://tools.ietf.org/agenda/80/slides/hybi-2.pdf butcan't understand..
     
    Mihael, Mar 7, 2012
    #1
    1. Advertising

  2. Mihael

    Mihael Guest

    P.S. Sorry for bad english..
     
    Mihael, Mar 7, 2012
    #2
    1. Advertising

  3. Mihael

    Lew Guest

    On Wednesday, March 7, 2012 12:02:40 PM UTC-8, Mihael wrote:
    > Hello!
    >
    > I try to create websocket server on Java
    >
    > this is my draft of code http://pastebin.com/k1D46cV7
    >
    > i try to connect from Chrome on Mac version 17.0.963.66
    > from this test page http://websocket.org/echo.html
    >
    > And connection success
    >
    > But when i send any data to server, in console on server application i see string like
    >
    > БУЭѓчЮ’ ЫттПДÑюƒТкљ№Тмл Е


    That's because you aren't controlling the string encoding.

    > how can i [sic] decode this string to normal?


    What is "normal"?

    > And when i try to send answer from server - client not get message...
    >
    > Please, give me code for right receive and decode message and right encode and send message.


    What is the native platform encoding on the server side?

    Always include encoding explicitly in the calls to encode/decode strings.

    Don't manipulate bytes to make Strings. Even 'char' isn't safe, as code points can be wider than 16 bits.

    Don't hard-code numeric values for end-of-line.

    Use a 'Reader' and 'Writer' instead of raw streams.

    Spell "receive" correctly.

    --
    Lew
     
    Lew, Mar 7, 2012
    #3
  4. Mihael

    Mihael Guest

    Thanks for your answer! But i can't understand, how to decode БУЭѓчЮ’ ЫттПДÑюƒТкљ№Тмл Е ?

    When I send "1" i get string ББђ,¶3Э
    or send "ping" i get string БДЧ≤’4зџїS
    or send "hello world!" i get string БМÑЩрЈfхЬ∞#оЯ≠oÑ—

    this is special encoded websocket strings? or what?

    pseudo code is

    InputStream is = s.getInputStream();
    byte buf[] = new byte[64*1024];
    int r = is.read(buf);
    String data = new String(buf, 0, r);
    System.out.println("Recieved Data: " + data);
     
    Mihael, Mar 7, 2012
    #4
  5. On 3/7/2012 2:08 PM, Mihael wrote:
    > Thanks for your answer! But i can't understand, how to decode БУЭѓчЮ’ ЫттПДÑюƒТкљ№Тмл Е ?
    >
    > When I send "1" i get string ББђ,¶3Э
    > or send "ping" i get string БДЧ≤’4зџїS
    > or send "hello world!" i get string БМÑЩрЈfхЬ∞#оЯ≠oÑ—
    >
    > this is special encoded websocket strings? or what?
    >
    > pseudo code is
    >
    > InputStream is = s.getInputStream();
    > byte buf[] = new byte[64*1024];
    > int r = is.read(buf);
    > String data = new String(buf, 0, r);
    > System.out.println("Recieved Data: " + data);


    If you are going to send Strings, you don't want to read and write bytes.

    BufferedReader br = new BufferedReader(new InputStreamReader(
    s.getInputStream(),***YOUR CHAR SET GOES HERE***));

    br.readLine();

    If the server you are connecting to is using a different character set
    you need to use a different constructor for InputStreamReader that sets
    the character set. See the docs for InputStreamReader.

    --

    Knute Johnson
     
    Knute Johnson, Mar 7, 2012
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    0
    Views:
    142
  2. Replies:
    1
    Views:
    202
    Takaaki Tateishi
    May 3, 2005
  3. sl@exabyte
    Replies:
    17
    Views:
    1,083
    Arne Vajhøj
    Dec 11, 2012
  4. Tobias Oberstein
    Replies:
    0
    Views:
    129
    Tobias Oberstein
    Jan 3, 2014
  5. Tobias Oberstein
    Replies:
    0
    Views:
    131
    Tobias Oberstein
    Jan 9, 2014
Loading...

Share This Page