webSocket
v0.12+
Summary
WebSockets 是一种先进的技术, 这使得在用户的 H5/iOS/Android 和一个服务器之间打开一个的交互式通信会话成为可能, 有了这个 API,你可以向服务器发送消息, 并接收事件驱动的响应, 无需轮询服务器的响应
注意:
- iOS和h5提供 WebSockets 的 protocol 默认实现,安卓使用需要提供自定义 adapter 实现,source:
API
WebSocket(url, protocol)
创建 WebSockets,并连接服务器
Arguments
url {string}
: 表示要连接的 URL;protocol {string}
: WebSockets 协议
send(data)
通过WebSocket连接向服务器发送数据
Arguments
data{string}
:要发送到服务器的数据
close(code,reason)
关闭 WebSockets 的链接
Arguments
code {number}
: 关闭连接的状态号.reason {string}
: 关闭的原因
onopen(options)
链接打开的监听
Arguments
options {object}
: 一个空的对象
onmessage(options)
消息事件的监听器
Arguments
options {object}
: 服务器返回的消息对象data {string}
: 监听器接收的到的消息
onclose(options)
关闭事件的监听器
Arguments
options {object}
: 监听器接收到的对象code {number}
: 服务器返回关闭的状态码reason {string}
: 服务器返回的关闭原因wasClean {boolen}
: 是否完全关闭.
onerror(options)
错误事件的监听器
Arguments
options {object}
: 错误信息的事件data {string}
: 监听器接收到的信息
Example
<template>
<scroller>
<div>
<div style="background-color: #286090">
<text class="title" style="height: 80px ;padding: 20px;color: white">websocket</text>
</div>
<input type="text" placeholder="please input message to send" class="input" autofocus="false" value="" @change="onchange" @input="oninput" ref="input"/>
<div style="flex-direction: row; justify-content: center;">
<text class="button" @click="connect">connect</text>
<text class="button" @click="send">send</text>
<text class="button" @click="close">close</text>
</div>
<div style="background-color: lightgray">
<text class="title" style="height: 80px ;padding: 20px;color: black">method = send</text>
</div>
<text style="color: black;height: 80px">{{sendinfo}}</text>
<div style="background-color: lightgray">
<text class="title" style="height: 80px ;padding: 20px;color: black">method = onopen</text>
</div>
<text style="color: black;height: 80px">{{onopeninfo}}</text>
<div style="background-color: lightgray">
<text class="title" style="height: 80px ;padding: 20px;color: black">method = onmessage</text>
</div>
<text style="color: black;height: 400px">{{onmessage}}</text>
<div style="background-color: lightgray">
<text class="title" style="height: 80px ;padding: 20px;color: black">method = onclose</text>
</div>
<text style="color: black;height: 80px">{{oncloseinfo}}</text>
<div style="background-color: lightgray">
<text class="title" style="height: 80px ;padding: 20px;color: black">method = onerror</text>
</div>
<text style="color: black;height: 80px">{{onerrorinfo}}</text>
<div style="background-color: lightgray">
<text class="title" style="height: 80px ;padding: 20px;color: black">method = close</text>
</div>
<text style="color: black;height: 80px">{{closeinfo}}</text>
</div>
</scroller>
</template>
<style scoped>
.input {
font-size: 40px;
height: 80px;
width: 600px;
}
.button {
font-size: 36px;
width: 150px;
color: #41B883;
text-align: center;
padding-top: 25px;
padding-bottom: 25px;
border-width: 2px;
border-style: solid;
margin-right: 20px;
border-color: rgb(162, 217, 192);
background-color: rgba(162, 217, 192, 0.2);
}
</style>
<script>
var websocket = weex.requireModule('webSocket')
export default {
data () {
return {
connectinfo: '',
sendinfo: '',
onopeninfo: '',
onmessage: '',
oncloseinfo: '',
onerrorinfo: '',
closeinfo: '',
txtInput:'',
navBarHeight: 88,
title: 'Navigator',
dir: 'examples',
baseURL: ''
}
},
methods: {
connect:function() {
websocket.WebSocket('ws://echo.websocket.org','');
var self = this;
self.onopeninfo = 'connecting...'
websocket.onopen = function(e)
{
self.onopeninfo = 'websocket open';
}
websocket.onmessage = function(e)
{
self.onmessage = e.data;
}
websocket.onerror = function(e)
{
self.onerrorinfo = e.data;
}
websocket.onclose = function(e)
{
self.onopeninfo = '';
self.onerrorinfo = e.code;
}
},
send:function(e) {
var input = this.$refs.input;
input.blur();
websocket.send(this.txtInput);
this.sendinfo = this.txtInput;
},
oninput: function(event) {
this.txtInput = event.value;
},
close:function(e) {
websocket.close();
},
},
}
</script>