Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Uniapp使用GoEasy实现websocket实时通讯

Uniapp使用GoEasy实现websocket实时通讯

原创
作者头像
GoEasy消息推送
修改于 2020-05-21 03:08:29
修改于 2020-05-21 03:08:29
3.5K0
举报
文章被收录于专栏:web推送技术web推送技术

Uniapp作为近来最火的移动端开发技术,一套代码,可以打包成Android/iOS app和各种平台的小程序,可谓是没有最方便只有更方便。

GoEasy上架DCloud Uniapp插件市场已经有一段时间了,收到很多Uniapp开发人员的赞扬和好评,小编在此隔着屏幕向大家鞠躬,小编和GoEasy团队会继续努力,持续为Uniapp开发者提供最简单且优雅的API,稳定高速可靠的即时通讯服务。

这段时间,也收到了很多朋友的一些问题?比如:

1、GoEasy和Uniapp websocket API有什么区别和优势?

Uniapp官方的websocket API主要是用来与您的websocket服务通讯,所以使用Uniapp websocket的前提是,首先要搭建好您自己的websocket服务,然后与之通讯。这是一个纯技术的API,在建立网络连接后,还有很多的工作需要自己来完成,比如:

  • 需要自己实现心跳机制,来维护网络连接,来判断客户端的网络连接状态;
  • 需要自己实现断网自动重连;
  • 需要自己维护消息列表,确保遇到断网重连后,消息能够补发;
  • 需要自己维护一个客户端列表;
  • ...

等等很多细致而繁杂的工作,比如websocket的安全机制和性能优化;

除此之外服务端也有很多工作需要自己完成,有兴趣自己搭建websocket的话,可以参考这篇技术分享《搭建websocket消息推送服务,必须要考虑的几个问题

而GoEasy是一个成熟稳定的websocket企业级PAAS服务平台,开发人员不需要考虑websocket服务端的搭建,只需要几行代码,就可以轻松实现客户端与客户端之间,服务器与客户端之间的的websocket通信,不需要考虑性能,安全,高可用集群的问题。只需要全力专注于开发自己的业务功能就好了。

GoEasy已经内置websocket中必备的心跳,断网重连,消息补发,历史消息和客户端上下线提醒等特性,开发人员也不需要自己搭建websocket服务处理集群高可用,安全和性能问题。GoEasy已经稳定运行了5年,支持千万级并发,成功支撑过很多知名企业的重要活动,安全性和可靠性都是久经考验。

2、GoEasy在Uniapp开发中主要用在哪些场景呢?

首先从技术上说,Uniapp支持的所有技术android, iOS和小程序,GoEasy都是完美支持的。

从应用场景上来说,所有需要websocket通信的场景,GoEasy都可以完美支持:

  • 聊天,IM,直播弹幕,用户上下线提醒, 在线用户列表
  • 扫码点菜,扫码登录, 扫码支付, 扫码签到, 扫码打印
  • 事件提醒,工单,订单实时提醒
  • 在线拍卖, 在线点餐,在线选座 实时数据展示,实时监控大屏, 金融实时行情显示,设备监控系统
  • 实时位置跟踪,外卖实时跟踪,物流实时跟踪
  • 远程画板,远程医疗,游戏,远程在线授课
  • ...

3、GoEasy的文档为什么这么简单?简单到我都不知道如何使用

简单还不好吗?GoEasy从研发的第一天,就把追求API的极简作为我们的工作重点。严格控制接口的数量,就是是为了降低开发人员的学习成本,其实就是为了让您爽啊!但这并不影响GoEasy完美支持所有的websocket即时通讯需求。

今天小编就手把手的教您用GoEasy在Uniapp下,最短的时间实现一个的web即时通讯Demo。

image
image

本demo已经通过小程序, iOS和Android的真机测试,完整源代码已经上传gitee,下载后,只需要将代码里的appkey换成自己的common key,就可以体验了。下载地址:

https://gitee.com/goeasy-io/GoEasyDemo-Uniapp-Helloworld

1、获取appkey

GoEasy官网(http://www.goeasy.io/)上注册账号,创建一个应用,拿到您的appkey

image
image

GoEasy提供了两种类型的appkey:

Common key: 即可以接收消息,也可以发送消息,与Subscriber Key最大的区别就是有写权限,可以发消息。适用于有消息发送需求的客户端和服务端开发。

Subscriber key: 只能接收消息,不可以发送消息,与Common Key最大的区别就是没有写权限,只能收消息。可以用于一些没有发送需求的客户端。

2、获取GoEasy SDK

两个方式:

DCloud Uniapp的插件市场下载:https://ext.dcloud.net.cn/plugin?id=1334

也可以直接在goeasy官网下载:https://www.goeasy.io/cn/doc/client/get-goeasy-js.html

3、初始化GoEasy对象

在main.js中将goeasy初始化为Uniapp的全局对象,方便所有页面都能方便的调用,同时也避免多个页面反复new GoEasy对象。

根据您在GoEasy后台创建应用时选择的区域,来传入不同的Host,如果您创建goeasy应用时,选择了杭州,那么host:"hangzhou.goeasy.io"。选择了新加坡,host:"singapore.goeasy.io"。

如果您的大部分用户都是在国内,创建应用时,记得选择杭州,以便获得更快的通讯速度。

代码语言:txt
AI代码解释
复制
// 在main.js中将goeasy初始化为全局对象,所有页面都能方便的调用,也避免多个页面反复new GoEasy对象

Vue.prototype.$goEasy = new GoEasy({

host: "hangzhou.goeasy.io",

appkey: "my_appkey", //替换为您的应用appkey

    onConnected: function() {

      console.log('连接成功!')

    },

    onDisconnected: function() {

      console.log('连接断开!')

    },

    onConnectFailed: function(error) {

      console.log('连接失败或错误!')

    }

});

4、uniapp端接收消息

代码语言:txt
AI代码解释
复制
this.$goEasy.subscribe({

    channel: "my_channel", //替换为您自己的channel

    onMessage: function (message) {

        alert("Channel:" + message.channel + " content:" + message.content);

    }

});

很多朋友会问channel从哪里来,如何创建,应该传入什么呢?

根据您的业务需求来设定,channel可以为任意字符串,除了不能包含空格,和不建议使用中文外,没有任何限制,只需要和消息的发送端保持一致,就可以收到消息。channel可以是您直播间的uuid,也可以是一个用户的唯一表示符,可以任意定义,channel不需要创建,可以随用随弃。

5、uniapp端发送消息

发送时,需要注意channel一定要和subscriber的channel完全一致,否则无法收到。

代码语言:txt
AI代码解释
复制
this.$goEasy.publish({

    channel: "my_channel", //替换为您自己的channel

    message: "Hello, GoEasy!" //替换为您想要发送的消息内容

});

本代码源码下载:

https://gitee.com/goeasy-io/GoEasyDemo-Uniapp-Helloworld

小程序特别强调:

若您需要打包为微信小程序,需要在微信公众号平台配置socket合法域名,否则无法使用。 具体步骤:

访问https://mp.weixin.qq.com,进入微信公众平台|小程序 -> 设置 -> 开发设置 -> 服务器域名

socket合法域名-> 添加 goeasy的地址:wx-hangzhou.goeasy.io(记得wx-开头)

若您创建GoEasy应用时选择了新加坡区域则添加地址:wx-singapore.goeasy.io

答疑时间:

1、我的服务器端可以发送消息吗?都支持些哪些语言?

当然可以,任何语言都可以通过调用goeasy的Rest API发送消息,同时为了大家方便,GoEasy的官方文档里,也准备了Java, C#,NodeJS,PHP,Ruby和Python等常见语言调用REST API的代码,这里获取更多详情:https://www.goeasy.io/cn/doc/server/publish.html

2、GoEasy可以发送图片,语音和视频吗?

当然可以,您可以通过推送文件路径的方式来实现文件的发送。

按照行业惯例,不论MSN,微信,QQ对于图片和视频,通常的做法都是,只推送文件路径,而不会推送文件本身。你如果有注意的话,当您接受图片和视频的时候,收到消息后,等一会儿才能看,就是因为发送的时候,只发送了路径。

GoEasy系列教程:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信小程序使用GoEasy实现websocket实时通讯
不需要下载安装,便可以在微信好友、微信群之间快速的转发,用户只需要扫码或者在微信里点击,就可以立即运行,有着近似APP的用户体验,使得微信小程序成为全民热爱的好东西~
GoEasy消息推送
2020/05/14
2.5K0
微信小程序使用GoEasy实现websocket实时通讯
Websocket IM聊天教程-教你用GoEasy快速实现IM聊天
经常有朋友问起GoEasy如何实现IM,今天就手把手的带大家从头到尾用GoEasy实现一个完整IM聊天,全套代码已经放在了gitee。
GoEasy消息推送
2020/05/15
3.7K0
Websocket IM聊天教程-教你用GoEasy快速实现IM聊天
Websocket直播间聊天室教程 - GoEasy快速实现聊天室
最近两年直播那个火啊,真的是无法形容!经常有朋友问起,我想实现一个直播间聊天或者我想开发一个聊天室, 要如何开始呢?
GoEasy消息推送
2020/05/18
2.8K0
Websocket直播间聊天室教程 - GoEasy快速实现聊天室
利用websocket搭建一起看的放映厅
网友问我能不能给他搭建一个可以异地一起看视频的网站,上网冲浪一圈认为这个项目肥肠适合他 。
Gujiu
2022/04/20
1.7K0
利用websocket搭建一起看的放映厅
【说站】GoEasy小程序即时通讯源码 v1.1.0/基于GoEasy提供的websocket通讯服务
GoEasy小程序即时通讯源码是一个基于GoEasy提供的websocket通讯服务
很酷的站长
2022/11/24
5230
【说站】GoEasy小程序即时通讯源码 v1.1.0/基于GoEasy提供的websocket通讯服务
搭建websocket消息推送服务,必须要考虑的几个问题
近年,不论是正在快速增长的直播,远程教育以及IM聊天场景,还是在常规企业级系统中用到的系统提醒,对websocket的需求越来越大,对websocket的要求也越来越高。从早期对websocket的应用仅限于少部分功能和IM等特殊场景,逐步发展为追求支持高并发,百万、千万级每秒通讯的高可用websocket服务。
GoEasy消息推送
2020/05/13
6.9K0
搭建websocket消息推送服务,必须要考虑的几个问题
uniapp使用WebSocket实现即时通讯
WebSocket是一种基于TCP协议的全双工通信协议,它可以在客户端和服务器之间建立一个持久性的连接,实现实时通信。在uniapp中,我们可以使用uni-socketio插件来实现WebSocket的功能。
超级小可爱
2023/10/18
4.2K0
微信小程序中如何使用WebSocket实现长连接(含完整源码)
微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架、组件以及 API,在这个平台上面的想象空间很大。腾讯云研究了一番之后,发现微信支持 WebSocket 还是很值得玩味的。这个特性意味着我们可以做一些实时同步或者协作的小程序。
JackJiang
2018/08/29
5.9K0
sync-player:使用websocket实现异地同步播放视频
前段时间我有这样一个需求,想和一个异地的人一起看电影,先后在网上找了一些方案,不过那几个案都有一些缺点
GoEasy消息推送
2020/10/20
3.1K0
IM聊天教程:发送图片/视频/语音/表情
为此,小编特意写了一个vue版本的Demo,实现了图片视频文件和表情的的发送,参考这个Demo源代码,相信你就可以轻松的用Uniapp和小程序完成类似的功能。
GoEasy消息推送
2020/05/19
5.4K0
IM聊天教程:发送图片/视频/语音/表情
八问WebSocket协议:为你快速解答WebSocket热门疑问
WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持。它使用方面、应用广泛,已经渗透到前后端开发的各种场景中。
JackJiang
2019/04/25
1.2K0
深入浅出即时通讯(1)_即时通讯协议对比
业界上用来做即时通讯的解决方案有:1. 基于http 的轮询; 2. 基于websocket 长连接; 3. 基于tcp或udp的自定义协议, 这种若在要在Web端使用, 需要套一层websocket 封装. 此外早期还有基于Comet 技术的长连接,基于xmpp 的开源客户端应用等。
E聊SDK
2022/05/17
3.1K0
新手入门:websocket
对于第1次听说WebSocket技术的人来说,两者有什么区别?websocket是仅仅将socket的概念移植到浏览器中的实现吗?
全栈程序员站长
2022/09/14
9060
新手入门:websocket
开源即时通讯IM框架MobileIMSDK的微信小程序端技术概览
MobileIMSDK - 微信小程序端是一套基于微信原生 WebSocket 的即时通讯库:
JackJiang
2023/04/20
9960
开源即时通讯IM框架MobileIMSDK的微信小程序端技术概览
基于Netty,徒手撸IM(一):IM系统设计篇
本文收作者“大白菜”分享,有改动。注意:本系列是给IM初学者的文章,IM老油条们还望海涵,勿喷!
JackJiang
2022/07/04
2.1K0
基于Netty,徒手撸IM(一):IM系统设计篇
Netty干货分享:京东京麦的生产级TCP网关技术实践总结
京东的京麦商家后台2014年构建网关,从HTTP网关发展到TCP网关。在2016年重构完成基于Netty4.x+Protobuf3.x实现对接PC和App上下行通信的高可用、高性能、高稳定的TCP长连接网关。
JackJiang
2018/08/29
4.5K1
网页端IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket
对Web端即时通讯技术熟悉的开发者来说,我们回顾网页端IM的底层通信技术,从短轮询、长轮询,到后来的SSE以及WebSocket,使用门槛越来越低(早期的长轮询Comet这类技术实际属于hack手段,使用门槛并不低),技术手段越来越先进,网页端即时通讯技术的体验也因此越来越好。
JackJiang
2021/05/25
1.7K0
搞懂现代Web端即时通讯技术一文就够:WebSocket、socket.io、SSE
有关Web端即时通讯技术的文章我已整理过很多篇,阅读过的读者可能都很熟悉,早期的Web端即时通讯方案,受限于Web客户端的技术限制,想实现真正的“即时”通信,难度相当大。
JackJiang
2021/09/07
3.2K0
搞懂现代Web端即时通讯技术一文就够:WebSocket、socket.io、SSE
开源轻量级 IM 框架 MobileIMSDK 的微信小程序端已发布!
MobileIMSDK - 微信小程序端是一套基于微信原生 WebSocket 的即时通讯库:
JackJiang
2023/04/03
7650
开源轻量级 IM 框架 MobileIMSDK 的微信小程序端已发布!
开源轻量级 IM 框架 MobileIMSDK 的Uniapp客户端库已发布
MobileIMSDK-Uniapp端是一套基于Uniapp跨端框架的即时通讯库:
JackJiang
2023/05/12
8721
开源轻量级 IM 框架 MobileIMSDK 的Uniapp客户端库已发布
推荐阅读
相关推荐
微信小程序使用GoEasy实现websocket实时通讯
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档