-
Notifications
You must be signed in to change notification settings - Fork 427
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Meta issue: AutobahnAndroid 2 #92
Comments
I also support this to be a major issue as of now - It puts the android implementations on hold which is one of the biggest application fronts. |
From https://groups.google.com/forum/#!topic/autobahnws/g7F-v6PrsX4: AutobahnAndroid: This has been unmaintained for some time, as the code base has major
Note: Right now, for Java and WAMP, have a look at If we find time, we'd rather strive for a AutobahnJava that is:
Rgd CompletableFuture and Android:
Ideally, we would use the backport when on Android < 7, and the native stuff on Android 7+ and Java 8+. |
I have been looking into this. The current websocket implementation is tied closely to Android i.e. makes use of Handler that is android specific and other bits. So the logical first step here would be to make sure the websocket dependency on Android is removed. The next thing then would be to get rid of NIO, I hacked around some code that does a websocket handshake using plain Socket, making no use of SocketChannel, though its ugly for now. Once we are able to cleanup the base, it will clear the path for WAMP v2. |
@om26er Removing NIO from WebSocket as a first step makes sense! So, essentially only touch and update the WebSocket/Android parts of the library. Remove NIO and support TLS. Stay with the reader/writer thread based design. Leave the WebSocket API as is (plain callback based). As a result, we should have a WebSocket(-client) on Android library that is TLS capable. It would also be nice to:
|
This is now implemented |
What about these points? Is compatibility for Android < Nougat still planned? Thanks. |
I took a quick look into streamsupport and from the brief look of it(and some testing), it seems that its just a matter of adding the library to the gradle project and updating our imports. My main concern is that we don't know how well supported the backport is and if there are any bugs that we inherit with streamsupport and more importantly, if its solely a community effort or does it have some commercial backing. @oberstet will have a better answer if support for Android < Nougat is planned. |
Currently, Nougat is at roughly 12% global distribution, so support for versions before is of commercial interest in principle. However, this is lower priority (commercially) compared to first-class, Netty-based Java 8 support. Because this is what enables to integrate Java backend/server code into a whole (WAMP) system. Commercial interest in AutobahnJava at the WAMP level on Android seems to be limited. Because there is AutobahnJS, and I can get away with a nice mobile HTML5 app or something. Less and less reasons a native app is required. At the WebSocket level, we don't have much interest commercially there, because we (obviously) care more about WAMP;) Finally, WAMP can nowerdays also run over RawSocket - which is simpler to implement and get right than WebSocket, and also comes with less processing overhead. And when RawSocket is run over TLS/443, it pretty much has the same network transparency as WebSocket. Only when there is a TLS unwrapping intermediary, the Web compatible design of WebSocket comes into play. However, at that point (a TLS intercepting intermediary in the line), one should probably worry about more than WAMP or WebSocket;) |
That being said, contributions are welcome of course! Best would be PRs. We have some of CI already and we can review in the light of that. However. we still need a covering set of unit tests and probably intergration tests (like in AB JS). Currently, we build and run exactly one program. Better than nothing. But. So this is also an area where contributions would be highly welcome! |
If java had an equivalent of c++' ifdef this would be a simple thing to do. Finding a way that does not result in lots of code duplication will be a challenge here. |
This is a meta issue to organize the issues related to bringing AutobahnAndroid up-to-date with the current WAMP ecosystem.
We'll be calling that next major release "AutobahnAndroid 2" for now.
Situation
AutobahnAndroid is a subproject of Autobahn.
AutobahnAndroid is a WebSocket and WAMP client library implementation specifically for Android. However, right now, it has multiple, concrete and important issues that need to get "fixed":
Further, these would be nice, but can come later
We should also
For testing/examples:
Next Steps
The API as defined here and here needs to be revised.
There should be a separate issue for this, as it needs discussion and close collaboration.
The text was updated successfully, but these errors were encountered: