返回顶部
首页 > 资讯 > 前端开发 > html >怎么用GoEasy快速实现IM聊天
  • 145
分享到

怎么用GoEasy快速实现IM聊天

2024-04-02 19:04:59 145人浏览 独家记忆
摘要

本篇内容主要讲解“怎么用GoEasy快速实现IM聊天”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用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聊天”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么用GoEasy快速实现IM聊天

本文链接: https://lsjlt.com/news/85045.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么用GoEasy快速实现IM聊天
    本篇内容主要讲解“怎么用GoEasy快速实现IM聊天”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用GoEasy快速实现IM聊天”吧!首先我们代码层将整个功...
    99+
    2024-04-02
  • 小程序实现实时聊天IM功能
    随着小程序的发展,给公司带来了不错的收益,但是有件比较苦恼的事情是,由于小程序没有即时聊天功能,这给公司的客服带来不少的麻烦,导致沟通没有时效性。通过更智能的企达第三方小程序IM,可以实现更多多维度的操作!主动邀请对话当用户进入小程序后,可...
    99+
    2023-06-05
  • Android中基于XMPP协议实现IM聊天程序与多人聊天室
    简单的IM聊天程序 由于项目需要做一个基于XMPP协议的Android通讯软件。故开始研究XMPP。 XMPP协议采用的是客户端-服务器架构,所有从一个客户端发到另一个客户端的...
    99+
    2022-06-06
    xmpp 程序 聊天室 Android
  • c#基于WinForm的Socket实现简单的聊天室 IM
    目录1:什么是Socket2:客服端和服务端的通信简单流程3:服务端Code:4:客服端Code:5:测试效果:6:完整Code GitHUb下载路径 7:这个只是一个简单...
    99+
    2024-04-02
  • Flutter快速实现聊天会话列表效果示例详解
    目录一、目标效果二、原理1、 涉及的方法2、实现逻辑三、使用四、最后一、目标效果 聊天会话页的列表效果 1、聊天数据不满一屏时,顶部显示所有聊天数据2、插入消息时如果最新消息紧靠列表...
    99+
    2024-04-02
  • Python怎么实现在线聊天室私聊
    本篇内容主要讲解“Python怎么实现在线聊天室私聊”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现在线聊天室私聊”吧!实现思路对于私聊,我觉得应该有如下两点需要实现私聊列表更...
    99+
    2023-06-02
  • 怎么用C++实现聊天小程序
    本篇内容介绍了“怎么用C++实现聊天小程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C++写一个游戏聊天服务器,供大家参考,具体内容如下...
    99+
    2023-06-20
  • 怎么用Ajax实现聊天机器人
    本篇内容介绍了“怎么用Ajax实现聊天机器人”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 功能实现:点击发送按钮事件将用户输入的...
    99+
    2023-06-25
  • php怎么实现聊天工具
    本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。php怎么实现聊天工具?PHP实现最简单的聊天室应用介绍聊天应用程序在网上非常常见。开发人员在构建这类应用程序时的选择也很多。这篇文章介绍了如何实现基于PHP-AJAX的...
    99+
    2018-02-11
    php 聊天
  • Java怎么实现NIO聊天室
    这篇文章给大家分享的是有关Java怎么实现NIO聊天室的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。功能介绍功能:群聊+私发+上线提醒+下线提醒+查询在线用户文件Utils需要用maven导入下面两个包 ...
    99+
    2023-06-15
  • C++怎么实现聊天程序
    这篇文章主要为大家展示了“C++怎么实现聊天程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++怎么实现聊天程序”这篇文章吧。具体内容如下服务端#include<iostream>...
    99+
    2023-06-20
  • java怎么实现即时聊天
    在Java中,可以使用Socket来实现即时聊天功能。具体步骤如下:1. 创建一个ServerSocket对象来监听客户端连接请求。...
    99+
    2023-10-09
    java
  • Android怎么实现聊天功能
    要实现聊天功能,可以使用 Android 提供的 Socket 和网络通信技术。以下是一个简单的实现聊天功能的步骤:1. 创建一个服...
    99+
    2023-10-09
    Android
  • node怎么实现语音聊天
    本教程操作环境:Windows10系统、node-v16.18.0版、DELL G3电脑node怎么实现语音聊天?基于nodejs的语音聊天描述程序在 iamshaunjp 的群聊功能基础上利用webRTC技术,添加了语音群聊功能,在其他人...
    99+
    2023-05-14
    node
  • android聊天功能怎么实现
    要实现Android聊天功能,你可以按照以下步骤进行:1. 创建一个用于显示聊天信息的界面。可以使用RecyclerView或Lis...
    99+
    2023-08-18
    android
  • Android怎么实现双向聊天
    Android实现双向聊天可以使用Socket通信,以下是实现步骤:1. 创建一个Socket服务器和一个Socket客户端。2. ...
    99+
    2023-08-18
    Android
  • java怎么实现聊天功能
    要实现聊天功能,可以使用Java中的Socket编程和多线程技术。首先,需要创建一个服务器端和多个客户端。服务器端负责接收和转发客户端之间的消息,而客户端则负责发送和接收消息。服务器端的代码示例:```javaimport java.i...
    99+
    2023-08-11
    java
  • golang websocket聊天室怎么实现
    要实现一个golang的websocket聊天室,可以遵循以下步骤: 导入所需的包: import ( "fm...
    99+
    2024-02-29
    golang websocket
  • 快速实现基于Python的微信聊天机器人示例代码
    最近听说一个很好玩的图灵机器人api,正好可以用它做一个微信聊天机器人,下面是实现 # test.py import requests import itchat #这是一个用于微信回复的库 KE...
    99+
    2022-06-04
    示例 机器人 快速
  • 怎么用CSS3实现聊天气泡效果
    小编给大家分享一下怎么用CSS3实现聊天气泡效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   <pclass=&q...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作