uniapp使用websocket实现消息的实时通信

实现过程:

1.下图所示文件内编写代码

 

 

 

 

 2.main.js文件下全局引入store

 3.获取第一步websocketInit()下的URL

使用API的方法

 

 由于URL包含后端记录的userId

 要在user文件里进行修改

 在上面的文件里添加USERID的字段

 

 

 总结:在消息界面调用this.$store.state.websocketData时无法将该字段进行传值,也就是说只能将this.$store.state.websocketData与,<view>界面连接比如说:

<view v-else>
                <uni-card class="todo_first"
                    thumbnail="/static/pictures/xietong.png" 
                    title="新协同消息"
                    :extra="this.$store.state.wsSynergyDate.createTime"
                    @click="handlemesSynergy">
                     <view>
                        <h5 class="todo_0">
                            <view > <text>{{this.$store.state.wsSynergyDate.creatorName}}</text> </view>
                            <view class="flex"> 
                                <text>{{this.$store.state.wsSynergyDate.msgTitle}}:</text>
                                <text>{{this.$store.state.wsSynergyDate.msgContent}}</text> 
                            </view>
                        </h5>
                    </view>
                </uni-card>
            </view>
        </view>

还有个问题:当我app退出登录或者结束运行后,再次登录APP消息界面为空,我通过连接消息表单与websocket同时使用,解决这个问题。也就是当没有新消息时我调用表单的第一条消息,有新通知则连接websocket。如下图

 

 

本篇文章主要参考《uni-app全局使用websocket收发数据》并做了一些改动。声明本文章只记录自己的学习过程。只接受友好技术讨论。不接受批评。爱看不看

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
uniApp中,WebSocket是一种全双工通信协议,它能够实现实时的数据交换,因此非常适合在客户端和服务端之间传输大量实时信息,包括图像文件。在uniApp中利用WebSocket技术发送和接收图片,需要同时考虑uniApp提供的原生能力以及一些跨域限制。以下是基本流程和步骤说明: ### 发送图片至服务端 #### 步骤一:初始化WebSocket连接 首先,需要创建一个WebSocket实例,并尝试建立与服务端的连接。在uni-app中,你可以通过调用微信提供的API来实现WebSocket的创建与连接。 ```javascript // 创建WebSocket实例 const socket = new WebSocket(`ws://${location.host}/websocket`); // 连接成功时的回调 socket.onopen = function(event) { console.log('连接成功'); }; // 连接关闭时的回调 socket.onclose = function(event) { console.log('连接已关闭'); }; // 接收到数据时的回调 socket.onmessage = function(event) { console.log('接收到的数据:', event.data); }; // 发送数据时触发 socket.send('请求数据'); ``` #### 步骤二:编码图片数据为Base64格式 由于WebSocket默认传输的是文本数据,因此我们需要将图片数据编码为Base64字符串后再进行传输。在uni-app中,可以通过本地方法获取图片文件,然后使用微信提供的文件管理API将其转换为Base64编码。 ```javascript const readFileAsDataURL = async (filePath) => { return new Promise((resolve, reject) => { wx.getFileSystemManager().readFile({ filePath, encoding: 'base64', success: (res) => resolve(res.data), fail: () => reject(new Error('无法读取文件')), }); }); }; // 示例:假设filePath是你想要编码的图片路径 readFileAsDataURL('/path/to/image.jpg') .then((dataURL) => { socket.send(dataURL); // 发送Base64编码的图片数据 }) .catch((error) => { console.error('Error reading or sending the image:', error); }); ``` ### 接收图片至客户端 服务端在接收到图片数据后,会按照相同的流程解码Base64字符串回原图格式,并返回给客户端。客户端接收到图片数据后,需要将其还原为原图格式。 ### 注意事项 1. **安全性**: 确保所有敏感信息加密传输,特别是涉及身份验证的部分。 2. **性能**: WebSocket虽然高效,但在某些网络环境下仍可能存在延迟或断开的问题。合理设计应用程序逻辑,避免因频繁或大量数据传输导致的性能问题。 3. **兼容性**: 确保WebSocket支持的范围,尤其是考虑到移动设备的限制及网络环境多样性。 ### 实际应用示例 实际开发中,你可能会遇到更多细节,如设置心跳机制保持连接活跃、错误处理、以及更复杂的业务逻辑交互。重要的是理解WebSocket的工作原理及其在实时通信场景下的优势。 ### 相关问题: 1. **WebSocket如何解决跨域问题?** 2. **如何在uniApp中配置WebSocket以适应不同平台特性?** 3. **如何利用WebSocket进行实时音视频通话?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gz.ronin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值