@yoonit/nativescript-websocket
为 Android 和 iOS 开发现代应用程序的 Yoonit WebSocket 插件
npm i --save @yoonit/nativescript-websocket

NativeScript Yoonit 摄像头

使用 NativeScript 和 WebSocket 在 Android 和 iOS 中构建现代应用程序

  • 稳定的 WebSocket 连接
  • 现代 JS 代码 (ESNext)
  • 在模拟器和真实设备上运行
  • 超时配置
  • 自动重连
  • 代理选项
  • 自定义头信息
  • VueJS 插件

赞助商

白金级
成为赞助商!

安装

npm i -s @yoonit/nativescript-websocket

用法

所有由 @yoonit/nativescript-websocket 提供的功能都通过 YoonitWebSocket 对象访问。以下是我们提供的基本用法代码,更多详细信息,请参阅 方法Vue 示例

VueJS 插件

main.js

import Vue from 'nativescript-vue'
import YoonitWebSocket from '@yoonit/nativescript-websocket/vue'

Vue.use(
YoonitWebSocket,
'wss://echo.websocket.org/',
{
protocol: '',
timeout: 1000,
headers: [],
reconnect: true,
delay: 1000,
debug: false,
proxy: {
address: '',
port: ''
}
}
)

之后,您可以在整个项目中使用 this.$yoo.socket 访问 socket 对象

Angular、React、Svelte 或任何其他框架

目前我们无法提供除 VueJS 以外的其他框架集成,您可以自由创建并发送 PR 给我们。但这是一个纯 NativeScript 插件,如果您知道如何操作您喜欢的平台,您将能够将其包含到您的项目中。

Vue 组件

使用 Yoonit 样式声明事件

App.vue

<template>
<Page @loaded="doLoaded"></Page>
</template>

<script>
export default {
data: () => ({
interval: null
}),
methods: {
doLoaded () {
// start the connection
this.$yoo.socket.open()
},
doPing () {
this.interval = setInterval(() => {
if (!this.$yoo.socket.getStatus())
{
return console.log('[YooSocket] Socket closed')
}

console.log("[YooSocket] Sending 'echo' message!")

// add your message/file to queue and call 'send' method
return this.$yoo.socket.push('echo')
}, 2000)
}
},
yoo: {
socket: {
events: {
open ($socket) {
console.log("[YooSocket] Hey! I'm connected!")

clearInterval(this.interval)
return this.doPing()
},
message ($socket, message) {
if (!message) {
console.log("[YooSocket] Message is empty")
}

console.log(`[YooSocket] Received Message: '${message}'!`)
},
close () {
console.log("[YooSocket] Socket was closed")
},
error () {
console.log("[YooSocket] Socket had an error")
}
}
}
}
}
</script>

或使用您已创建的自定义方法声明事件

App.vue

<template>
<Page @loaded="doLoaded"></Page>
</template>

<script>
export default {
data: () => ({
interval: null
}),
methods: {
doLoaded () {
// start the connection
this.$yoo.socket.open()

// declare all callback events
this.$yoo.socket.events({
open: this.doSocketOpen,
message: this.doReceivedMessage,
close: this.doSocketClose,
error: this.doSocketError
})
},

doPing () {
this.interval = setInterval(() => {
if (!this.$yoo.socket.getStatus())
{
return console.log('[YooSocket] Socket closed')
}

console.log("[YooSocket] Sending 'echo' message!")

// add your message/file to queue and call 'send' method
return this.$yoo.socket.push('echo')
}, 2000)
},

doSocketOpen ($socket) {
console.log("[YooSocket] Hey! I'm connected!")

clearInterval(this.interval)

// onOpen event calls your function
return this.doPing()
},

doSocketClose () {
// onClose event
return console.log('[YooSocket] Socket was closed')
},

doSocketError () {
// onError event
return console.log('[YooSocket] Socket had an error')
},

doReceivedMessage ($socket, message) {
// onMessage event
return console.log(`[YooSocket] Received Message: '${message}'!`)
},
}
}
</script>

API

方法

函数 参数 有效值 返回类型 描述
openAsync timeout 任何正数,默认 1000 (ms) void 等待 timeout 开始连接
open - - void 立即开始连接
on 事件,回调 string,function void 包含一个事件,每当服务器发送此类型的事件时,您的回调将被调用
off 事件,回调 string,function void 排除一个事件
事件 回调 对象,包含函数 { open: [], close: [], message: [], error: [], fragment: [], handshake: [] } void 您可以在每个事件中使用 Array 的回调。使用此方法一次添加多个事件
getStatus - - boolean 您可以使用此方法检查连接状态
push content string/blob void 向服务器发送文件或字符串。您可以使用此方法进行上传等操作
destroy - - void 销毁服务器连接
close code,message number,string void 程序化地关闭服务器连接并提供原因
queueLength - - number 获取待发送的总挂起项数
isOpen - - boolean 获取连接状态
isClosed - - boolean 获取连接状态
isClosing - - boolean 获取连接状态
isConnecting - - boolean 获取连接状态

属性

属性 返回类型
protocol string
timeout number
headers array
reconnect boolean
delay number
debug boolean
proxy object
回调 object
url string
opened boolean

参与贡献并使其变得更好

克隆仓库,修改您需要的内容并提交PR。对于提交信息,我们使用常规提交规范

贡献总是受欢迎的!


Yoonit团队用❤编写代码