Coder Social home page Coder Social logo

easemob-demo-appserver's Introduction

logo

Easemob IM App Server

简介

该服务为 环信直播间Demo 提供后端服务,可作为 App 使用环信SDK实现直播间的服务器端实现示例。

1、每一个直播间,都唯一对应一个聊天室, 直播间复用了对应聊天室的所有资源,包括聊天室详情及成员列表等;
2、新建一个直播间会同时新建一个聊天室;新建一个直播间时,该直播间的直播状态为“未直播”,当前直播场次ID为0(直播场次ID默认为0,没开始一场直播,直播场次ID加1);
3、删除直播间后,聊天室成员会被移出聊天室,直播间所有信息会被删除,用户不可再加入该直播间;
4、(1.0.3.Final版本新增功能)直播间增加persistent属性,默认为true,当设置为false时,直播间停播一个小时后,会被自动删除;
5、(1.0.3.Final版本新增功能)直播间支持点播类型。详情请查看直播间API文档。
  • 该服务目前提供的功能有
1、创建直播间;
2、修改直播间详情;
3、获取直播间详情;
4、获取直播间列表;
5、获取正在直播的直播间列表;
6、开启直播;
7、结束直播;
8、转让直播间;
9、删除直播间;
10、获取推拉流地址。

技术选择

主要组件

  • MySQL

数据库使用说明

  • 使用MySQL存储直播间信息
  • 建表SQL见 建表SQL

直播间API文档

直播间Demo服务端API文档

环信直播间文档

环信直播间集成文档

使用

  • 若初次使用环信,需前往 环信IM开发者注册页 注册成为环信IM开发者;

  • 注册成为环信IM开发者后,登录环信IM管理后台 创建一个应用(App),之后在App详情页可获得AppKey以及AppKey的clientId和clientSecret;

  • 成为环信IM开发者并成功注册App后,可在自己的服务器部署服务

    • 服务配置文件参考:application.properties

    • AppKey组成规则:${orgName}#${appName},拿到AppKey后可得到对应的orgName和appName;

    • 使用自己的orgName和appName以及AppKey的clientId和clientSecret修改配置文件,如下:

        easemob.live.rest.appkey.orgName=easemob-demo
        easemob.live.rest.appkey.appName=chatdemoui
        easemob.live.rest.appkey.clientId=xxxx
        easemob.live.rest.appkey.clientSecret=xxxx
    
    • 安装MySQL,并根据建表SQL创建数据库及表,设置服务配置文件:
        spring.datasource.url=jdbc:mysql://127.0.0.1:3306/app_server?useSSL=false&useUnicode=true&characterEncoding=utf8
        spring.datasource.username=root
        spring.datasource.password=123456
    
    • 启动服务即可

Docker Deploy

# 打包
mvn clean install -DskipTests

# 进入Dockerfile目录
cd easemob-im-live-server/

# build docker image
mvn com.spotify:dockerfile-maven-plugin:build

# 至此服务的docker image已经build完成,启动服务需要先启动本地或docker的MySQL服务,并正确配置application-docker.properties中的mysql数据源地址。
# run docker service
docker run -p 8080:8080 easemob/easemob-im-live-server

模块说明

  • 提供直播间Rest Api服务,包含controller、model、service、exception等。
  • 直播间服务需调用环信REST接口,该模块提供调用环信REST服务,包含token、user、chatroom API的调用,封装了调用所需的RequestBody、ResponseBody。
  • 获取七牛云直播推拉流地址。
  • 获取声网token。

环信文档

服务端REST文档

Release Note

1.0.4.Final

  • 增加声网server模块,获取声网token

1.0.3.Final

  • 直播间支持过期自动清理
  • 直播间支持点播功能
  • 直播间支持Docker部署
  • 直播间详情返回的成员列表过滤了owner

1.0.2.Final

  • 支持获取七牛云推拉流地址

easemob-demo-appserver's People

Contributors

fudonghai avatar shenchong avatar skyfour avatar

Stargazers

 avatar Jeff Xie avatar  avatar geekCarl avatar  avatar  avatar  avatar  avatar Cody avatar 王璀璨同学 avatar

Watchers

赵贵斌 avatar flreey avatar James Cloos avatar Alex Chen (陈小弟) avatar unqiang avatar Johnson avatar CROTEL avatar Ken Wang avatar 杨尚山 avatar 徐涛 avatar 徐正礼 avatar 张超 avatar Chris avatar  avatar 吴茂昌 avatar  avatar  avatar

easemob-demo-appserver's Issues

注册账号类型转换异常

2022-02-14 10:24:54.063 22215-22215/com.hyphenate.easeim W/Bundle: Attempt to cast generated internal exception:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at android.os.BaseBundle.getInt(BaseBundle.java:1036)
at android.os.BaseBundle.getInt(BaseBundle.java:1018)
at com.hyphenate.push.EMPushConfig$Builder.enableVivoPush(Unknown Source:27)
at com.hyphenate.push.EMPushConfig$Builder.(Unknown Source:56)
at com.hyphenate.chat.EMClient.init(Unknown Source:119)
at com.hyphenate.easeui.EaseIM.init(EaseIM.java:94)
at com.hyphenate.easeim.DemoHelper.initSDK(DemoHelper.java:193)
at com.hyphenate.easeim.DemoHelper.init(DemoHelper.java:135)
at com.hyphenate.easeim.common.repositories.EMClientRepository$2.createCall(EMClientRepository.java:88)
at com.hyphenate.easeim.common.repositories.NetworkOnlyResource.fetchFromNetwork(NetworkOnlyResource.java:47)
at com.hyphenate.easeim.common.repositories.NetworkOnlyResource.init(NetworkOnlyResource.java:40)
at com.hyphenate.easeim.common.repositories.NetworkOnlyResource.(NetworkOnlyResource.java:28)
at com.hyphenate.easeim.common.repositories.EMClientRepository$2.(EMClientRepository.java:82)
at com.hyphenate.easeim.common.repositories.EMClientRepository.registerToHx(EMClientRepository.java:82)
at com.hyphenate.easeim.section.login.viewmodels.LoginViewModel.register(LoginViewModel.java:48)
at com.hyphenate.easeim.section.login.fragment.RegisterFragment.registerToHx(RegisterFragment.java:169)
at com.hyphenate.easeim.section.login.fragment.RegisterFragment.onClick(RegisterFragment.java:157)
at android.view.View.performClick(View.java:6603)
at android.view.View.performClickInternal(View.java:6576)
at android.view.View.access$3100(View.java:780)
at android.view.View$PerformClick.run(View.java:26088)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6702)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.