目前我可以正常发送接受文字消息,后台消息中也有字段type区分是文字还是表情图片音频等。
想问的是这些各类型消息我发送和接受有什么思路可以实现。
文字的就不用说了,正常可以发。图片的我目前做法是div使用了contenteditable属性,然后就可以上传图片也可以截图发送,我是比如截图后粘贴到div输入框内,然后会有一个vue指令来判断是否粘贴的图片,如果是就把图片处理一下上传。然后拿到图片的url。我再调用ws.send方法把图片的url和type类型是图片,传给后台,后台返回给我的也是type类型等于图片,我就在显示信息的地方用v-if根据type类型选择显示什么。但是这样我只能上传图片和文字二选一,那比如说我又要写文字,然后又添加了一个图片截图在输入框中,我想要一起发送出去,这种情况发送和接收如何处理呢。还有就是包括表情如何实现,表情和文字一起发送如何实现。
vue聊天系统如何发送和接受各类消息
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- m0_54204465 2023-01-15 09:36关注
你可以考虑使用一个根据用户输入的不同类型的组件来发送和接收不同类型的消息。
对于文本消息,你可以使用一个输入框组件,用户可以在这里输入文本并发送。
对于图片消息,你可以使用一个图片上传组件,用户可以选择本地图片并上传。也可以使用一个截图组件,用户可以在这里截图并上传。
对于表情消息,你可以使用一个表情库组件,用户可以在这里选择表情并发送。
为了能够一起发送文字和图片,可以考虑使用 formData 来上传文件。formData 是一种用来封装表单数据的对象,可以将文件和文字一起添加到请求中。
具体实现方法如下:
使用 addEventListener 监听粘贴事件,如果粘贴的是图片,则将图片转化为 blob 对象。
创建一个 formData 对象,将文字和图片 blob 对象添加到 formData 中。
使用 axios 或者 fetch 发送请求,将 formData 作为请求数据发送给后台。对于表情和文字一起发送的情况,可以将表情转化为文字或图片格式,然后和文字一起发送。在前端,可以在输入框中添加表情按钮,点击该按钮后弹出表情面板,选择需要的表情,将表情转化为文字或图片格式并插入到输入框中。后端接收到的消息中,需要判断是文字还是表情,并进行相应的处理。
对于图片和文字一起发送的情况,可以考虑在前端使用一个数组来存储当前输入框里的所有内容,包括文字和图片。然后在调用ws.send方法发送数据时,将这个数组作为参数传递给后台。后台接收到这个数组之后,根据里面的数据类型进行处理,并把处理结果返回给前端。
对于表情的实现,可以考虑在前端预先加载所有表情的图片,然后在输入框中使用一个特定的字符来代表某个表情,比如:smile:来代表笑脸表情。在提交消息时,将这些特定字符替换成对应的图片链接,再调用ws.send方法发送数据给后台。后台接收到这些数据之后,根据链接来显示对应的表情。
在实现这些功能时,需要注意安全问题,比如图片链接的验证,防止XSS攻击等。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 RPA正常跑,cmd输入cookies跑不出来
- ¥15 求帮我调试一下freefem代码
- ¥15 matlab代码解决,怎么运行
- ¥15 R语言Rstudio突然无法启动
- ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
- ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
- ¥15 用windows做服务的同志有吗
- ¥60 求一个简单的网页(标签-安全|关键词-上传)
- ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
- ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。