android-websockets icon indicating copy to clipboard operation
android-websockets copied to clipboard

Thanks for code. Maybe you interested in proposed improvements:

Open igor-- opened this issue 12 years ago • 8 comments

  • no need HappyDataInputStream extends DataInputStream, if you use DataInputStream readFully method: stream.readFully(...) to read from input stream exactly some number of bytes (not less as it can be if you use read() )

  • you use double arithmetic in the code (seems it's java script way But in Java we can work with bits fields. So instead: frame[1] = (byte) (masked | 127); frame[2] = (byte) (((int) Math.floor(length / Math.pow(2, 56))) & BYTE); frame[3] = (byte) (((int) Math.floor(length / Math.pow(2, 48))) & BYTE); frame[4] = (byte) (((int) Math.floor(length / Math.pow(2, 40))) & BYTE); frame[5] = (byte) (((int) Math.floor(length / Math.pow(2, 32))) & BYTE); frame[6] = (byte) (((int) Math.floor(length / Math.pow(2, 24))) & BYTE); frame[7] = (byte) (((int) Math.floor(length / Math.pow(2, 16))) & BYTE); frame[8] = (byte) (((int) Math.floor(length / Math.pow(2, 8))) & BYTE); frame[9] = (byte) (length & BYTE);

    can be used: frame[1] = (byte) (masked | 127); //frame[2] = (byte) (0); //frame[3] = (byte) (0); //frame[4] = (byte) (0); //frame[5] = (byte) (0); frame[6] = (byte) ((length >> 24) & 0xFF); frame[7] = (byte) ((length >> 16) & 0xFF); frame[8] = (byte) ((length >> 8) & 0xFF); frame[9] = (byte) (length & 0xFF);

    • variable 'length' has int type, so contains only 4 bytes, so frame[2]..frame[5] will be always 0. (your code ported from java script and wrote as length can contains 8 bytes)

    • you can use DataInputStream standard function to read 2 and 8 bytes integer, likes: length = stream.readUnsignedShort(); // read 2 bytes length

      long length8 = stream.readLong(); // read 8 bytes length if( length8 > Integer.MAX_VALUE ) throw new IOException("too big frame length"); length = (int)length8;

instead of your method: byteArrayToLong()

igor-- avatar Apr 10 '13 15:04 igor--

Thanks igor, would you be able to submit a pull request?

codebutler avatar May 27 '13 21:05 codebutler

Hi !

For me it was learning task. Really I make clone:

  • removed Android specific thread (replaces to ExecutorService), so now it works in standard java (tested in Windows)
  • in bases of your code added server socket implementation. So now it's both client and server (see ClientTest.java, ServerTest.java)
  • added naive http support (enough to web handshake)

You free use the code as you want (MIT licence)

Please see attachment

Regards, Igor

On Tue, May 28, 2013 at 12:49 AM, Eric Butler [email protected]:

Thanks igor, would you be able to submit a pull request?

— Reply to this email directly or view it on GitHubhttps://github.com/codebutler/android-websockets/issues/10#issuecomment-18515911 .

igor-- avatar May 28 '13 09:05 igor--

Hi @igor--, your attachment appears to be missing? thanks.

codebutler avatar May 28 '13 17:05 codebutler

Opps,

In attachment was sources in zip file !

Seems the mail have some filters How I can send it ?

Or maybe really submit it as clone in github ?

Igor

On Tue, May 28, 2013 at 8:09 PM, Eric Butler [email protected]:

Hi @igor-- https://github.com/igor--, your attachment appears to be missing? thanks.

— Reply to this email directly or view it on GitHubhttps://github.com/codebutler/android-websockets/issues/10#issuecomment-18565053 .

igor-- avatar May 28 '13 17:05 igor--

a pull request is definitely easiest for me, cheers. https://help.github.com/articles/creating-a-pull-request

On Tue, May 28, 2013 at 10:57 AM, igor-- [email protected] wrote:

Opps,

In attachment was sources in zip file !

Seems the mail have some filters How I can send it ?

Or maybe really submit it as clone in github ?

Igor

On Tue, May 28, 2013 at 8:09 PM, Eric Butler [email protected]:

Hi @igor-- https://github.com/igor--, your attachment appears to be missing? thanks.

— Reply to this email directly or view it on GitHub< https://github.com/codebutler/android-websockets/issues/10#issuecomment-18565053>

.

— Reply to this email directly or view it on GitHubhttps://github.com/codebutler/android-websockets/issues/10#issuecomment-18568306 .

codebutler avatar May 28 '13 18:05 codebutler

Hi Eric !

I create new project and commit the sources, please see:

https://github.com/igor--/tinywebsocket

Regards, Igor

On Tue, May 28, 2013 at 9:01 PM, Eric Butler [email protected]:

a pull request is definitely easiest for me, cheers. https://help.github.com/articles/creating-a-pull-request

On Tue, May 28, 2013 at 10:57 AM, igor-- [email protected] wrote:

Opps,

In attachment was sources in zip file !

Seems the mail have some filters How I can send it ?

Or maybe really submit it as clone in github ?

Igor

On Tue, May 28, 2013 at 8:09 PM, Eric Butler [email protected]:

Hi @igor-- https://github.com/igor--, your attachment appears to be missing? thanks.

— Reply to this email directly or view it on GitHub<

https://github.com/codebutler/android-websockets/issues/10#issuecomment-18565053>

.

— Reply to this email directly or view it on GitHub< https://github.com/codebutler/android-websockets/issues/10#issuecomment-18568306>

.

— Reply to this email directly or view it on GitHubhttps://github.com/codebutler/android-websockets/issues/10#issuecomment-18568564 .

igor-- avatar May 28 '13 18:05 igor--

Thanks! I'll look into integrating your work. I had considered removing the Android-specific code, I like the name "tinywebsockets".

codebutler avatar May 28 '13 18:05 codebutler

OK Thanks.

On Tue, May 28, 2013 at 9:54 PM, Eric Butler [email protected]:

Thanks! I'll look into integrating your work. I had considered removing the Android-specific code, I like the name "tinywebsockets".

— Reply to this email directly or view it on GitHubhttps://github.com/codebutler/android-websockets/issues/10#issuecomment-18571924 .

igor-- avatar May 28 '13 19:05 igor--