How to receive and send websocket messages in Java?

M

Mihael

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 :)
 
L

Lew

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.
 
M

Mihael

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);
 
K

Knute Johnson

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.
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Staff online

Members online

Forum statistics

Threads
473,769
Messages
2,569,577
Members
45,052
Latest member
LucyCarper

Latest Threads

Top