Guest User

Untitled

a guest
Jul 15th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. package ti.modules.titanium.network;
  2.  
  3. import org.appcelerator.kroll.KrollDict;
  4. import org.appcelerator.kroll.KrollProxy;
  5. import org.appcelerator.kroll.annotations.Kroll;
  6. import org.appcelerator.titanium.TiContext;
  7. import org.appcelerator.titanium.util.Log;
  8. import org.appcelerator.titanium.util.TiConfig;
  9. import org.appcelerator.titanium.util.TiConvert;
  10.  
  11. import java.io.IOException;
  12. import java.net.URI;
  13. import java.net.URISyntaxException;
  14.  
  15. import net.tootallnate.websocket.WebSocketClient;
  16. import net.tootallnate.websocket.WebSocketDraft;
  17.  
  18. @Kroll.proxy(creatableInModule=NetworkModule.class)
  19. public class WebSocketClientProxy extends KrollProxy
  20. {
  21. private static final String LCAT = "WebSocketClientProxy";
  22. private static final boolean DBG = TiConfig.LOGD;
  23.  
  24. private WebSocketClient ws = null;
  25.  
  26. //
  27. // Our extended client, nested of course
  28. //
  29. public class TiWebSocketClient extends WebSocketClient {
  30. public TiWebSocketClient(URI uri, WebSocketDraft draft) {
  31. super(uri, draft);
  32. }
  33.  
  34. public void onMessage(String message) {
  35. if (onMessageCallback != null) onMessageCallback.call(message);
  36. }
  37.  
  38. public void onOpen() {
  39. if (onOpenCallback != null) onOpenCallback.call();
  40. }
  41.  
  42. public void onClose() {
  43. if (onCloseCallback != null) onCloseCallback.call();
  44. }
  45. }
  46.  
  47. public WebSocketClientProxy(TiContext tiContext) {
  48. super(tiContext);
  49. }
  50.  
  51. @Override
  52. public void handleCreationDict(KrollDict options) {
  53.  
  54. KrollCallback onOpenCallback = null;
  55. KrollCallback onMessageCallback = null;
  56. KrollCallback onErrorCallback = null;
  57. KrollCallback onCloseCallback = null;
  58.  
  59. super.handleCreationDict(options);
  60.  
  61. // root out the url
  62. if (options.containsKey("url")) setProperty("url", TiConvert.toString(options, "url"));
  63.  
  64. // get the callbacks
  65. if (options.containsKey("callbacks") {
  66. KrollDict _callbacks = (KrollDict) options.get("callbacks");
  67.  
  68. if (_callbacks.containsKey("onopen")) onOpenCallback = (KrollCallback) _callbacks.get("onopen");
  69. if (_callbacks.containsKey("onmessage")) onMessageCallback = (KrollCallback) _callbacks.get("onmessage");
  70. if (_callbacks.containsKey("onerror")) onErrorCallback = (KrollCallback) _callbacks.get("onerror");
  71. if (_callbacks.containsKey("onclose")) onCloseCallback = (KrollCallback) _callbacks.get("onclose");
  72. }
  73.  
  74. if (DBG) {
  75. Log.i(LCAT, "Creating web socket proxy for url: " + TiConvert.toString(getProperty("url")));
  76. }
  77. }
  78.  
  79. @Kroll.method @Kroll.getProperty
  80. public boolean isConnected() {
  81. return (ws != null) ? true : false
  82. }
  83.  
  84. @Kroll.method
  85. public void connect() {
  86. try {
  87. String _url = new URI(TiConvert.toString(getProperty("url")));
  88. ws = new TiWebSocketClient(_url, WebSocketDraft.DRAFT76);
  89. ws.connect();
  90. } catch (URISyntaxException ex) {
  91. if (onErrorCallback != null)
  92. onErrorCallback.call(createErrorResponse(BAD_URI, "Supplied URi is not a valid WebSocket URI"));
  93. }
  94. }
  95. }
  96.  
  97. @Kroll.method
  98. public void close() {
  99. if (isConnected()) ws.close();
  100. }
  101.  
  102. }
Add Comment
Please, Sign In to add comment