- 版本:1.5.5
- GitHub: https://github.com/nathanaela/nativescript-websockets
- NPM: https://npmjs.net.cn/package/%40c4dt%2Fnativescript-websockets
- 下载
- 昨天:0
- 上周:0
- 上个月:6
NativeScript WebSockets
这是一个适用于 iOS 和 Android 的跨平台 WebSocket 库。
许可证
我的代码(c)2015-2019,Master Technology。我的所有代码都按照 MIT 许可证授权。Android 库也是 MIT 许可,iOS 库使用 Apache 2.0 许可;您可以阅读“LICENSE”文件查看它们。
我还做合同工作;如果您想为 NativeScript(或任何其他软件项目)构建模块,请随时联系我 [email protected]。
如果您想使用专业和支持插件,请查看全新 https://proplugins.org
安装
首先运行 tns --version
v1.4 或更高版本
在您的项目根目录中运行 tns plugin add nativescript-websockets
。
限制
- 两个平台上的协议发送支持都未完全实现。不要依赖它;它只部分工作。
Angular
请注意并不要忘记使用 NgZone.run()
-- 如果在某些情况下您没有使用它;当您获取数据更新时,您的 UI 可能不会更新。这不是该库的限制;这只是 Angular 的变更检测系统的工作方式。
用法
您可以使用两种可能的接口:模拟基于浏览器的 WebSocket 的简单 WebSocket 接口以及您有更多控制的更高级 WebSocket 接口。
基于浏览器的接口
require('nativescript-websockets');
var mySocket = new WebSocket("ws://echo.websocket.org", [ /* "protocol","another protocol" */]);
mySocket.addEventListener('open', function (evt) { console.log("We are Open"); evt.target.send("Hello"); });
mySocket.addEventListener('message', function(evt) { console.log("We got a message: ", evt.data); evt.target.close(); });
mySocket.addEventListener('close', function(evt) { console.log("The Socket was Closed:", evt.code, evt.reason); });
mySocket.addEventListener('error', function(evt) { console.log("The socket had an error", evt.error); });
高级接口
var WS = require('nativescript-websockets');
var mySocket = new WS("ws://echo.websocket.org",{protocols: [/* 'chat', 'video' */], timeout: 6000, allowCellular: true, headers: { 'Authorization': 'Basic ...' }});
mySocket.on('open', function(socket) { console.log("Hey I'm open"); socket.send("Hello"); });
mySocket.on('message', function(socket, message) { console.log("Got a message", message); });
mySocket.on('close', function(socket, code, reason) { console.log("Socket was closed because: ", reason, " code: ", code); });
mySocket.on('error', function(socket, error) { console.log("Socket had an error", error);});
基于浏览器的 WebSocket
基于浏览器的 WebSocket 与您使用浏览器时几乎相同;当您创建它时会自动打开;所有四个事件都具有不同值的“事件”对象。您不允许重新打开已关闭的套接字,并且您无法控制任何其他附加功能。
创建和打开新的基于浏览器的 WebSocket
new WebSocket(url, [protocols]);
参数
- URL - (String) - 要打开的 WebSocket URL
- 协议 - 可选(String 数组)- 有效的协议列表。请参阅限制说明。
将事件附加到 WebSocket
****#### .attachEventListener(EventName, function)
.on(EventName, function)
参数
- EventName - (String) 可以是 "open"、"close"、"message" 和 "error"
- function - (Function) 当事件发生时将被调用的函数
高级 WebSocket
高级 WebSocket 允许您在设置和创建方面拥有更多控制;另外,如果它们已关闭,您可以在不重置事件的情况下重新打开它。
创建新的高级 WebSocket
var WS = require('nativescript-websockets'); var ws = new WS(url, options);
参数
- URL - 打开 URL
- 选项 ** 协议 - (字符串数组) - 有效的协议。(见限制说明) ** 超时 - 超时时间(在iOS上默认为60,000ms,在Android上默认为10,000ms,将此设置为0将禁用超时) ** allowCellular(仅iOS,默认为True) - 可以禁用WebSocket通过蜂窝网络传输 ** sslSocketFactory(仅Android,默认为null) - 您可以传递您想要使用的SSL套接字工厂。
将事件附加到 WebSocket
.attachEventListener(事件名称,函数,传递的this)
.on(事件名称,函数,传递的this)
参数
- EventName - (String) 可以是 "open"、"close"、"message" 和 "error"
- 函数 - (函数) 当事件发生时将被调用的函数
- 传递的this - 函数期望的"this"对象
打开WebSocket
.open()
说明:在高级WebSocket中,您可以重新打开已关闭的WebSocket...
高级和浏览器WebSocket之间的常见函数
关闭已打开的Socket
.close(code, reason)
参数
- code - 可选(数字) - 代码
- reason - 可选(字符串) - 原因
发送文本或二进制消息
.send(message)
参数
- message - 字符串或数组/ArrayBuffer - 要发送的文本字符串或二进制消息
检索当前状态
.readyState
值
- 0 - 连接
- 1 - 打开
- 2 - 关闭中
- 3 - 已关闭
您打开的URL
.url
返回协商的协议
.protocol
请参阅限制说明。
如果是在iOS上则返回true
.ios
如果是在Android上则返回true
.android
移除事件监听器
.removeEventListener (事件名称,函数)
.off(事件名称,函数)
参数
- 事件名称 - (字符串) - 事件名称(open,close,message,error)
- 函数 - (可选函数) - 如果您没有传递任何函数到此处;这将移除该事件的全部事件监听器,否则它将只移除那个事件监听器。
检查是否打开
.isOpen()
如果连接打开则返回true
检查是否关闭
.isClosed()
如果连接关闭则返回true
检查是否正在连接
.isConnecting()
如果连接正在连接则返回true
检查连接是否正在关闭
.isClosing()
如果在关闭过程中则返回true
教程
需要更多帮助来使用NativeScript WebSocket?请查看关于NativeScript的这些教程。