# sxran-im **Repository Path**: Sxen77/sxran-im ## Basic Information - **Project Name**: sxran-im - **Description**: 快速实现聊天交友社交IM音视频通话,即时通讯私聊/群聊/好友/支持千人大群消息推送提醒,支持发送图片、语音、小视频、坐标、外链、红包、文件等自定义im消息,支持自定义的服务端。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: https://ext.dcloud.net.cn/plugin?id=16723 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2024-05-05 - **Last Updated**: 2024-05-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 经历过程 - 从2020年疫情以来,在家第一次接触IM的之后,就拥有了这个社交梦。 - 第一个APP尝试了云厂商的IM插件,的确能快能出来,但是高额的费用,个人承受不了。 - 第二个APP尝试从淘宝买了一个防微信的IM,前后端一体,抛开代码细节,想整合我其他模块的内容也是一个灾难。 - 因为APP没有流量,之后转做小程序,采用市面上的开源项目,整合起来也是费劲。而且大多也是半开源,语音视频通话(或者其他的)需要付费。 【其实这种买断类型的也还可以接受,毕竟别人也要生活】 - 之后的uni-im腾空出世,我内心小小激动一把。毕竟他不是买断类型,而是交的服务器费用,性价比更高。【的确很多优点:插件化页面,支持其他的服务端】 - 至此,向先前辈敬礼,还是没有解决如何整合我原有其他项目的生态逻辑。 - 开始再次造轮子做这个项目。 # 项目架构 - 采用微服务的思想处理后端逻辑。 【 通信中心 + 自有后端 , 他们采用http处理】 - 前端ws连接【通信中心】,并只和【通信中心】交互。 - 【通信中心】 仅仅负责通信,和一些固定场景的通信逻辑的处理(根据业务的返回值处理),如添加好友需要给对方发送通知。 - 【自有后端】 做具体的业务逻辑处理,存储内容,http返回值来控制【通信中心】的最终业务逻辑处理。 # 项目简介 - 项目前端使用uniapp,源码由官方的uni-im项目引申而来。 【 主要持续完善官方的:插件化页面,支持其他的服务端 】 - 项目后端目前使用java + h2内嵌数据库,该项目仅仅用于快速搭建后端【性能不高】。 - 如果后端不希望使用java,那也只需要对应的http接口,入参和出参保持不变一致就行。 - 每个都有扩展对象来支持额外的前端业务需求。 - 该项目的前端已经连接啦demo后端示例,你也可以不搭建后端,来体验前端的源码。 - 到此可以看到我的愿望是做一个标准,各个前后端都可以替换的开源项目。 【标准:页面对应的字段确定,ws交互的确定,】 - 如果你想替换前端,那么有个ws的js你是可以直接用的,其他的一些额外逻辑单独处理一下。 - 如果你想整体替换后端,包括【通信中心】那么请你按照ws的js逻辑做一套后端处理就行。 - 如果你仅仅只想要整合后端,只要把数据库切换一下,在自己的项目中新加一个http接口来处理所有的业务逻辑适配一下就行。 - 如果你不希望任何开发的话,可以用一整体的前后端,你仅仅提供一个数据库连接就行。 # 特点优势 - 性价比高;【仅仅通信中心的流量收费,毕竟大家都是小众开发者】 - uni-im的前端优势,都会加进来。 - 如果不转行,就一直搞社交。 - 完全免费的视频/语音通话。 - 已兼容pc端的处理,后续会有多端支持。 - 离线通知,直播,后续会慢慢加上的。 - 其他相关的需求也可以联系我来优先处理。 # 使用须知 - 下载后的目录结构: src 就是java的后端;openvidu-vue 音视频页面 ; uni-app就是对应的前端;uni-im_example 是对应uni-im的源码镜像方便对比。 - 默认仅仅需要启动前端就可以啦。 - 后端目前【通信中心】只支持本地,如果需要会尽快上线。 【现在还是优先完善im的功能,毕竟是独立开发者精力有限】 - 欢迎大家提[issue](https://gitee.com/sxran/sxran-im/issues) # 运行后端(非必须) 说明: - 默认的前端使用的是公网已经部署的该项目对应的后端; 所以这一步可以不需要 - 该后端使用的是java11;请为idea设置对应的java版本。 (必须,第三方的音视频sdk要求.) - 该项目的后端仅仅是示例形式,肯定做不了商业版。 比如h2数据库,注册,敏感词,上传文件等形式肯定是需要优化的,同时还应该根据自己的业务做特殊优化。 - 该后端涉及: 简单的http业务处理(如:注册和登陆),连接通信中心,音视频交互的需要http接口。 - 运行application ``` mvn spring-boot:run ``` - 部署application ``` mvn clean package ``` # 运行前端 说明 - 会尽可能的使用ws,也就是一个js文件交互。 - 对于http的依赖目前迫不得已加上了,用户注册和用户登陆。(实际这里的业务需要和自己的处理)【必须要引入http的短连接,ws必须鉴权才能连接的原则是不能改的。】 - 目前自己也正在使用,欢迎在内部添加我好友`sxran-im`。 帮忙一起测试完善 安装依赖 ```node npm install ``` 运行 - 用hx就直接开发uni-app运行就行。 - [WebStorm开发uniapp代码提示及编译运行方法 非vue-cli创建项目](https://www.jianshu.com/p/5e6ec397878b) # 技术使用 - [同一个浏览器,需要开2个浏览器账号来登陆不同账号使用,因为用户信息是放到本地存储的。](https://jingyan.baidu.com/article/02027811d4b23a5bcc9ce5d8.html) - 默认拥有1,2,3的账户id。 密码为123456 # 音视频私有化部署 [这是免费的哈:见源码的openvidu-vue/README.md ](https://gitee.com/sxran/sxran-im/blob/master/openvidu-vue/README.md) - [快速体验](https://sxran.gitee.io/sxran-im/?url=https%3A%2F%2Fyunlvltd.com%2F) - 注意:使用时不能是Safari相关的内容否则 控制台会报错:`Browser Safari (version 16.6) for iOS is not supported in OpenVidu` - 在IM中的h5使用只能是localhost,或者部署到https服务器中才能使用。 - 如果被别人占用啦,可能会报错,多刷新等待几次。 同一机器不能开2个视频可能会报错。 # 手机扫码体验 ### 浏览器体验 [点我体验](https://yunlvltd.com/sxran-im-h5/) # 联系客服 qq: 873406903 qq群: 726136542 因为微信群需要更新二维码,就不使用啦。 # 功能介绍 - 目前的功能,除了APP离线推送,其他的和uni-im的功能一致。 - 视频通话 ## 聊天页面 - ui支持敏感词过滤: 发送【涉黄】敏感词将被过滤掉 - 支持表情,图片,视频,视频通话 # 鸣谢 - [uni-im](https://ext.dcloud.net.cn/plugin?name=uni-im) - [sxran-tool-js](https://gitee.com/sxran/sxran-tool-js) - [xe-utils](https://github.com/x-extends/xe-utils) # 下一个计划 1. 打算自己使用起来正式成为1.0版本【目前已上线且正在使用】。持续修复使用过程中的bug。 2. 离线通知的修改处理。