我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用GoEasy快速实现IM聊天

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用GoEasy快速实现IM聊天

本篇内容主要讲解“怎么用GoEasy快速实现IM聊天”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用GoEasy快速实现IM聊天”吧!

首先我们代码层将整个功能分为四层:

  1. 华丽的展示层(index.html):你们负责功能优雅强大,我负责貌美如花。展示层其实就是纯静态的html,显示界面,高端点说,就是负责人机交互的。

  2. 承上启下的控制层(controller.js):  控制层作用就是接受页面操作的参数,调用service层,根据页面的操作指令或者service层的反馈,负责对页面的展示做出控制。不可以编写任何与展示逻辑无关的代码,也就是不能侵入任何业务逻辑。衡量这一层做的好不好的的标准,就是假设删掉controller和view层,service能准确完整的描述所有的业务逻辑。

  3. 运筹帷幄的关键核心业务层(service.js): 接受controller层的指令,实现业务逻辑,必要时候调用goeasy提供网络通讯支持,或调用restapi层完成数据的查询和保存。这一层包含所有的业务逻辑,任何业务逻辑相关的代码,都不可以漏到其他层,确保只要service存在,整个项目的灵魂就存在,确保service层完全是原生代码实现业务逻辑,而没有类似于vue或者小程序前端框架的语法和代码渗入,从而达到service层能够在任何前端框架通用。

  4. 神通广大的服务器交互层(restapi.js): 根据传入的参数完成服务器端接口的调用,来实现数据查询或、修改或保存,并且返回结果,不参与任何业务逻辑。在实践中大部分是负责发送http请求和服务器交互。

分层的目标就是为了确保除了在核心业务层以外的其他层次能够被轻易的替换。举例:我们当前的版本是使用html+jquery完成,如果希望再开发一个Uniapp实现的小程序或者app,只需要用Uniapp画个新外壳,对controller层做一些修改,就可轻松完成一个小程序或者APP版的IM聊天,不需要对service和restapi做任何修改 。同理,如果服务器端发生变化,或者更换了与服务器的交互方式,只需要对restapi做出修改,其他三层则不受任何影响。

OK, 有了如此清晰而优秀的代码结构分层设计,就差一段优雅的代码来实现了。

Ready, Go! 编码开始:

  1. 登录页面,这个最简单,闭着眼睛画个界面,用户名密码正确后,完成以下几个步骤。
    1.1. 根据用户名查询出来的用户,初始化全局变量:当前用户。
    1.2. 将controller层的onNewMessage, onFriendOnline,onFriendOffline赋值给service 。
    1.3. new goeasy建立长连接,记得要传入userid。如需在subscriberPrencese用户上下线提醒事件,或者在调用HereNow获取在线用户列表时,能拿到userId以外,更多的信息,可以在userdata里传入。
    1.4. 调用restapi,查询该用户的好友列表,根据结果初始化本地好友列表friendlist。
    1.5. 将所有有监听的好友的friendUUID放入一个数组,调用subscriberPrencense,监听所有好友的上下线事件。
    1.6. 以当前用户的uuid为channel,调用subscriber,监听来自所有好友发来的消息。
    1.7. 显示好友列表界面。
    1.8. 初始化好友的在线状态,以数组形式传入所有好友的userId,调用hereNowByUserIds,获得当前在线的好友列表,根据结果将friendlist里属于在线状态的friend的在线状态改为true,同时将界面上在线用户的头像改为彩色。

  2. 显示好友列表(1.7)
    2.1. service层获取当前用户信息,在页面显示当前用户的username和头像。
    2.2. service获取本地好友列表,然后controller将每个好友的头像和名称显示到页面上,对于当前在线的用户,旁边显示一个小绿点,并且为每个好友绑定一个点击事件,点击好友时,显示聊天界面, 如果该好友有未读消息的,红色小气泡显示未读消息数量。

  3. 点击一个好友,进入与其聊天的界面
    3.1. 窗口顶部显示聊天好友的名称。
    3.2. 调用restapi根据当前用户的UUID和好友的friendUUID,查询与该好友的聊天记录,如果这个聊天记录的sender是自己,就显示在页面的右边,如果是朋友发的,则显示在左边。
    3.3. 将该好友在本地数据里未读消息恢复为0。
    3.4. 并且将聊天记录滚动到最下边。
    3.5. 如果点击返回,就直接调进入第二步。

  4. 在聊天界面,输入消息后发送:
    4.1. 当前用户uuid作为senderUUID和消息内容组成chatMessage。
    4.2. 调用restapi将chatMessage发往“服务器”端,我们建议的方式是所有的消息发往自己的服务器端,在服务器端先保存入库,然后在服务端publish. 具体做法是将chatMessage转换为字符串,入库,然后将该好友的channel作为channel调用GoEasy完成publish。(当然,你会发现在我们的示例代码这个过程是在restapi里直接完成的,原因是为了demo的演示方便,我们模拟的服务器端行为,相信你懂的)
    4.3. 自己的消息发送成功后,显示在聊天窗口的右边。

  5. 收到新消息:
    5.1. 在1.6定义了接收好友新消息的事件,当收到一条好友的新消息时。
    5.2. 首先调用restapi保存到服务器。
    5.3. 本地好友数据里的未读消息加1。
    5.4. 如果当前界面是好友列表,将来自该朋友的未读消息的数字显示在界面上。
    5.5. 如果收到的消息就是来自当前对话窗口,就将消息显示到聊天窗口,并且调用service将本地数据里该好友的未读消息清0。

  6. 用户上下线提醒
    6.1. 在1.5监听了用户上下线,当收到一个用户上线或下线的通知后(注意返回的是一个列表,一次事件有可能有多个好友都发生了状态变化)。
    6.2. 修改将本地数据里该好友对象在线状态,如果是上线事件就显示彩色,如果是下线就显示黑白色。

至此,整个聊天功能就完成了,是不是很简单呢。在整个demo中只用到了goeasy的四个API
subscriber(接收消息),subscriberPrencense(接受上下线通知),hereNowByUserIds(获取当前在线用户列表), publish(发送消息),详情可以参考goeasy官方文档: https://www.goeasy.io/cn/developers.html

哼!这难道不是纸上谈兵吗?Talk is cheap, show me the code! 优雅的代码在哪里呢?

别着急,当然有全套代码拉,如果放个zip文件的下载连接,显得B格太低,老规矩,gitee见: https://gitee.com/goeasy-io/GoEasyDemo-IM-Chat

注意事项:      

  1. 在restapi.js 里 可以找到用户名和密码

  2. 在service.js里将appkey替换为您自己的common key

  3. subscriberPrencense和hereNowByUserIds这两个方法,默认是关闭的

到此,相信大家对“怎么用GoEasy快速实现IM聊天”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用GoEasy快速实现IM聊天

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么用C++实现聊天小程序

本篇内容介绍了“怎么用C++实现聊天小程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C++写一个游戏聊天服务器,供大家参考,具体内容如下
2023-06-20

Python怎么实现在线聊天室私聊

本篇内容主要讲解“Python怎么实现在线聊天室私聊”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现在线聊天室私聊”吧!实现思路对于私聊,我觉得应该有如下两点需要实现私聊列表更
2023-06-02

怎么用Ajax实现聊天机器人

本篇内容介绍了“怎么用Ajax实现聊天机器人”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 功能实现:点击发送按钮事件将用户输入的内容渲染到
2023-06-25

node怎么实现语音聊天

node实现语音聊天的方法:1、使用nodejs模块express创建一个web服务器;2、创建https连接;3、通过“socket.io”实现客户端与服务端实时通信即可。
2023-05-14

php怎么实现聊天工具

php实现聊天工具的方法:1、执行函数set_chat_msg;2、在服务器中执行chat_send_ajax.php;3、从Query String中接收表单数据;4、收集聊天信息;5、在窗口返回内容即可。
2018-02-11

java怎么实现即时聊天

在Java中,可以使用Socket来实现即时聊天功能。具体步骤如下:1. 创建一个ServerSocket对象来监听客户端连接请求。2. 当有客户端发起连接请求时,通过accept()方法接受客户端的连接,并创建一个Socket对象与客户端
2023-10-09

Android怎么实现聊天功能

要实现聊天功能,可以使用 Android 提供的 Socket 和网络通信技术。以下是一个简单的实现聊天功能的步骤:1. 创建一个服务器端和一个客户端:- 服务器端:使用 ServerSocket 创建一个服务器端的 Socket,并监听指
2023-10-09

golang websocket聊天室怎么实现

要实现一个golang的websocket聊天室,可以遵循以下步骤:导入所需的包:import ("fmt""log""net/http""github.com/gorilla/websocket")定义一个websocket连接的upg
golang websocket聊天室怎么实现
2024-02-29

android聊天功能怎么实现

要实现Android聊天功能,你可以按照以下步骤进行:1. 创建一个用于显示聊天信息的界面。可以使用RecyclerView或ListView来展示聊天消息的列表。2. 创建一个用于输入消息的界面。可以使用EditText和Button来实
2023-08-18

Java怎么实现NIO聊天室

这篇文章给大家分享的是有关Java怎么实现NIO聊天室的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。功能介绍功能:群聊+私发+上线提醒+下线提醒+查询在线用户文件Utils需要用maven导入下面两个包
2023-06-15

C++怎么实现聊天程序

这篇文章主要为大家展示了“C++怎么实现聊天程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++怎么实现聊天程序”这篇文章吧。具体内容如下服务端#include#incl
2023-06-20

Android怎么实现双向聊天

Android实现双向聊天可以使用Socket通信,以下是实现步骤:1. 创建一个Socket服务器和一个Socket客户端。2. 在Socket服务器上启动一个线程来监听客户端连接请求,并接受连接。3. 在Socket客户端上启动一个线程
2023-08-18

java怎么实现聊天功能

要实现聊天功能,可以使用Java中的Socket编程和多线程技术。首先,需要创建一个服务器端和多个客户端。服务器端负责接收和转发客户端之间的消息,而客户端则负责发送和接收消息。服务器端的代码示例:```javaimport java.io.
2023-08-11

快速实现基于Python的微信聊天机器人示例代码

最近听说一个很好玩的图灵机器人api,正好可以用它做一个微信聊天机器人,下面是实现# test.pyimport requests import itchat #这是一个用于微信回复的库KEY = '8edce3ce905a4c1dbb96
2022-06-04

怎么用java socket实现局域网聊天

这篇文章主要介绍“怎么用java socket实现局域网聊天”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用java socket实现局域网聊天”文章能帮助大家解决问题。代码很简单分为两个类,一
2023-06-30

怎么用javaweb实现在线聊天工具

本篇内容主要讲解“怎么用javaweb实现在线聊天工具”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用javaweb实现在线聊天工具”吧!写这个玩意儿就是想练练手, 用户需要登陆才能在线聊天
2023-06-17

SpringBoot+WebSocket怎么实现在线聊天

本篇内容主要讲解“SpringBoot+WebSocket怎么实现在线聊天”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot+WebSocket怎么实现在线聊天”吧!在线聊天使用
2023-06-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录