Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ti.modules.titanium.network;
- import org.appcelerator.kroll.KrollDict;
- import org.appcelerator.kroll.KrollProxy;
- import org.appcelerator.kroll.annotations.Kroll;
- import org.appcelerator.titanium.TiContext;
- import org.appcelerator.titanium.util.Log;
- import org.appcelerator.titanium.util.TiConfig;
- import org.appcelerator.titanium.util.TiConvert;
- import java.io.IOException;
- import java.net.URI;
- import java.net.URISyntaxException;
- import net.tootallnate.websocket.WebSocketClient;
- import net.tootallnate.websocket.WebSocketDraft;
- @Kroll.proxy(creatableInModule=NetworkModule.class)
- public class WebSocketClientProxy extends KrollProxy
- {
- private static final String LCAT = "WebSocketClientProxy";
- private static final boolean DBG = TiConfig.LOGD;
- private WebSocketClient ws = null;
- //
- // Our extended client, nested of course
- //
- public class TiWebSocketClient extends WebSocketClient {
- public TiWebSocketClient(URI uri, WebSocketDraft draft) {
- super(uri, draft);
- }
- public void onMessage(String message) {
- if (onMessageCallback != null) onMessageCallback.call(message);
- }
- public void onOpen() {
- if (onOpenCallback != null) onOpenCallback.call();
- }
- public void onClose() {
- if (onCloseCallback != null) onCloseCallback.call();
- }
- }
- public WebSocketClientProxy(TiContext tiContext) {
- super(tiContext);
- }
- @Override
- public void handleCreationDict(KrollDict options) {
- KrollCallback onOpenCallback = null;
- KrollCallback onMessageCallback = null;
- KrollCallback onErrorCallback = null;
- KrollCallback onCloseCallback = null;
- super.handleCreationDict(options);
- // root out the url
- if (options.containsKey("url")) setProperty("url", TiConvert.toString(options, "url"));
- // get the callbacks
- if (options.containsKey("callbacks") {
- KrollDict _callbacks = (KrollDict) options.get("callbacks");
- if (_callbacks.containsKey("onopen")) onOpenCallback = (KrollCallback) _callbacks.get("onopen");
- if (_callbacks.containsKey("onmessage")) onMessageCallback = (KrollCallback) _callbacks.get("onmessage");
- if (_callbacks.containsKey("onerror")) onErrorCallback = (KrollCallback) _callbacks.get("onerror");
- if (_callbacks.containsKey("onclose")) onCloseCallback = (KrollCallback) _callbacks.get("onclose");
- }
- if (DBG) {
- Log.i(LCAT, "Creating web socket proxy for url: " + TiConvert.toString(getProperty("url")));
- }
- }
- @Kroll.method @Kroll.getProperty
- public boolean isConnected() {
- return (ws != null) ? true : false
- }
- @Kroll.method
- public void connect() {
- try {
- String _url = new URI(TiConvert.toString(getProperty("url")));
- ws = new TiWebSocketClient(_url, WebSocketDraft.DRAFT76);
- ws.connect();
- } catch (URISyntaxException ex) {
- if (onErrorCallback != null)
- onErrorCallback.call(createErrorResponse(BAD_URI, "Supplied URi is not a valid WebSocket URI"));
- }
- }
- }
- @Kroll.method
- public void close() {
- if (isConnected()) ws.close();
- }
- }
Add Comment
Please, Sign In to add comment