# dzhyun.mobile **Repository Path**: elsejj/dzhyun.mobile ## Basic Information - **Project Name**: dzhyun.mobile - **Description**: No description available - **Primary Language**: JavaScript - **License**: BSD-2-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2015-11-04 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 必要的了解 ## [J2Objc](http://j2objc.org/) J2Objc 是一个将 Java 代码转换成 Obj-C 代码的工具,这样,对于UI无关的代码,我们只需要写一份,在本项目中, 将PB数据转换成JSON格式的部分是通过J2Objc来完成的。 所以,ios 的工程编译需要 J2Objc 相关库的支持,请先下载它,并将其安装到 `~/Library/J2Objc` 中,这样可以 免于额外的路径设置。 ## DzhChannel React Native 本身是支持 WebSocket 的,为了更加方便的使用,我们将其 WebSocket 相关的代码复制了一份, 并将其改名为 DzhChannel, DzhChannel 对于二进制类型的消息,做 Pb 到 Json 的转换 ```java // Java 中的转换 @Override public void onMessage(BufferedSource bufferedSource, WebSocket.PayloadType payloadType) { // ... if (payloadType == WebSocket.PayloadType.BINARY) { try { message = Pb2Json.toJson(bufferedSource.readByteArray()); bufferedSource.close(); } catch (IOException e) { FLog.e( ReactConstants.TAG, "decode pb failed " + id, e); return; } } // ... } ``` 这样,在前端,请求 pb 格式的数据,实际使用 json 格式的数据 ```javascript var DzhChannel = require('./Libraries/YunSdk/DzhChannel') var ws = new DzhChannel("ws://v2.yundzh.com/ws?token=491deae237634848bf274aac4a410895"); ws.onopen = function() { ws.send("/quote/kline?obj=SH600000&period=1day&qid=inputbox&start=-100&output=pb"); }; ws.onmessage = function(e) { // e.data 是一个 JSON 字符串 console.log(e.data); }; this.ws = ws; ``` DzhChannel 的其他使用同 WebSocket