123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- <template>
- <view>
- <page-head title="websocket通讯示例"></page-head>
- <view class="uni-padding-wrap">
- <view class="uni-btn-v">
- <view class="websocket-msg">{{showMsg}}</view>
- <button type="primary" @click="connect">连接websocket服务</button>
- <button v-show="connected" type="primary" @click="send">发送一条消息</button>
- <button type="primary" @click="close">断开websocket服务</button>
- <view class="websocket-tips">发送消息后会收到一条服务器返回的消息(与发送的消息内容一致)</view>
- </view>
- </view>
- </view>
- </template>
- <script>
- let platform = uni.getSystemInfoSync().platform
- export default {
- data() {
- return {
- connected: false,
- connecting: false,
- msg: false,
- roomId: ''
- }
- },
- computed: {
- showMsg() {
- if (this.connected) {
- if (this.msg) {
- return '收到消息:' + this.msg
- } else {
- return '等待接收消息'
- }
- } else {
- return '尚未连接'
- }
- }
- },
- onUnload() {
- uni.closeSocket()
- uni.hideLoading()
- },
- methods: {
- connect() {
- if (this.connected || this.connecting) {
- uni.showModal({
- content: '正在连接或者已经连接,请勿重复连接',
- showCancel: false
- })
- return false
- }
- this.connecting = true
- uni.showLoading({
- title: '连接中...'
- })
- uni.connectSocket({
- url: 'wss://echo.websocket.org',
- data() {
- return {
- msg: 'Hello'
- }
- },
- // #ifdef MP
- header: {
- 'content-type': 'application/json'
- },
- // #endif
- // #ifdef MP-WEIXIN
- method: 'GET',
- // #endif
- success(res) {
- // 这里是接口调用成功的回调,不是连接成功的回调,请注意
- },
- fail(err) {
- // 这里是接口调用失败的回调,不是连接失败的回调,请注意
- }
- })
- uni.onSocketOpen((res) => {
- this.connecting = false
- this.connected = true
- uni.hideLoading()
- uni.showToast({
- icon: 'none',
- title: '连接成功'
- })
- console.log('onOpen', res);
- })
- uni.onSocketError((err) => {
- this.connecting = false
- this.connected = false
- uni.hideLoading()
- uni.showModal({
- content: '连接失败,可能是websocket服务不可用,请稍后再试',
- showCancel: false
- })
- console.log('onError', err);
- })
- uni.onSocketMessage((res) => {
- this.msg = res.data
- console.log('onMessage', res)
- })
- uni.onSocketClose((res) => {
- this.connected = false
- this.startRecive = false
- this.msg = false
- console.log('onClose', res)
- })
- },
- send() {
- uni.sendSocketMessage({
- data: 'from ' + platform + ' : ' + parseInt(Math.random() * 10000).toString(),
- success(res) {
- console.log(res);
- },
- fail(err) {
- console.log(err);
- }
- })
- },
- close() {
- uni.closeSocket()
- }
- }
- }
- </script>
- <style>
- .uni-btn-v {
- padding: 10rpx 0;
- }
- .uni-btn-v button {
- margin: 20rpx 0;
- }
- .websocket-room {
- height: 40px;
- line-height: 40px;
- text-align: center;
- border-bottom: solid 1px #DDDDDD;
- margin-bottom: 20px;
- }
- .websocket-msg {
- padding: 40px 0px;
- text-align: center;
- font-size: 14px;
- line-height: 40px;
- color: #666666;
- }
- .websocket-tips{
- padding: 40px 0px;
- text-align: center;
- font-size: 14px;
- line-height: 24px;
- color: #666666;
- }
- </style>
|