Gem 融云服务器端 API Ruby SDK

martin91 · 2016年11月03日 · 最后由 aelf.io 回复于 2020年01月14日 · 3722 次阅读

简介

这个 gem 是什么?

这个 gem 是我利用业余时间开发完成的融云 IM 功能的 Server API 的 Ruby gem,实现了 Server API 的绝大部分接口(实时消息路由、消息历史记录以及在线状态订阅这三个付费服务接口未实现)的 Ruby 对接。这个 gem 已经在我自己的项目中正常运行,大家可以放心使用。

安装

gem 'rong_cloud_server', '~> 0.0.2'

源码请看 martin91/rong_cloud

这个 gem 有什么特点?

  1. 轻量,没有任何其他依赖,所有 HTTP 请求直接基于 net/http 实现,我可不想你用的时候发现我又替你的项目引入了一个不必要的 HTTP Client;
  2. 简单直观,所有方法名跟参数名基本参照 API 文档,不封装任何 DSL。因为我觉得作为一个 SDK,只需要做好最简单的请求封装就够了,使用者总免不了要去了解 API 本身细节,所以有必要尽可能保持 API 文档跟 SDK 代码的一致性。

如果你在用的过程中,有其他需求或者问题,欢迎在 github 上给我提交 issue,我会仔细考虑提供更多开发。

TL;DR

源起

之前的开发中需要融云 IM 的功能,但是在集成的过程中,都没有找到特别舒服的 gem,大部分的 gem 都已经太长时间没有维护了,很多也缺失测试,而官方的所谓 SDK 就不敢恭维了,与其说是一个 SDK,还不如说是一堆代码片段,根本没法开箱即用,大家先感受一下:

  1. 看看官方库的 issues
  2. 其中一个 issue 的讨论
  3. 文件命名
  4. 额。。。

后来使用的是 https://github.com/FlowerWrong/rongcloud-ruby 这个 gem(不知道这个 FlowerWrong 在社区的 id,先表示一下真诚的感谢,因为从最开始的项目集成还有后来的自己的 gem 的开发,都从这个库里受益良多),但是用的过程中依然发现一些问题,比如在发系统消息的时候,由于融云要求数组型参数必须采用 param=value1&param=value2 的方式,而 rongcloud-ruby 使用的 rest_client 则会将数组参数自动转换为 param[]=value1&param[]=value2的方式,导致融云服务器端返回参数错误警告。而且由于这个 ruby gem 久未更新,出错的地方也是没有测试覆盖的,就只能自己先临时 fork 并且修复。

由于自己项目中还用了 httparty 作为 http client,加上 rongcloud-ruby 依赖的 rest client,就导致安装完,项目中有多个 http client,这点就真的好烦了,所以一心想着回头利用业余时间解决这个问题。

本来计划是对 rongcloud-ruby 库进行测试补全跟重构,但是后来评估了这些工作量,觉得还不如重新写一个简洁一点的 gem 就好了,所以就放弃了对 fork 过来的 gem 的继续维护,对此也对 FlowerWrong 表示一下抱歉。

然后,就是开头的那个 gem 的诞生了。。。。。。

支持支持 👍 原来这些个第三方服务对待服务端 SDK 的态度是一样的啊,真让人揪心

PS:感觉官方开发这个库的人是写 PHP 过活的(不是黑)

#1 楼 @helperhaps 跟之前的极光推送的那个是异曲同工,不过至少极光那个能跑起来。

我来给配图上的标注点赞,对 Java 程序员来说,写 Ruby 的太台为难他们了,嘿嘿...

#2 楼 @martin91 好吧,看来极光的要求更高一点啊(摊手),能够编译通过并且能运行。。。

我突然想起之前的维护 SDK 的人拉着我的手,俯下身来喃喃的说,我们的要求很高,国内 SDK 都是辣鸡,要参考就看国外的有名的大项目,云云,我瞬间就特别崇拜这个人,以之为大牛。

然而当我打开他的其他 SDK 项目,我好几口老血,

再看看他说的国内辣鸡 SDK,“起码比你写的好太多”

求打个马赛克

#4 楼 @lgn21st 这句话用在 Geetest 新版验证码的 ruby sdk 上真的太适合了……官方维护的 ruby sdk 不兼容新的 api。自己去读官方 3.3.0 以后的文档云里雾里,最后只能看一遍官方 java 的 sdk 才知道怎么实现 ruby 的……😀

#6 楼 @akirapanda 代码比文档好的典范,哈哈

Martin 大神在开源之路越走越远了,可惜论坛不支持红包打赏,不然就从物质上支持下! 🐻

#8 楼 @ruby_sky 心领心领,年底结算就好。

可能 ruby 太小众?刚刚看了官方 ruby sdk,感觉没法用,才跑来 ruby-china 找。

pynix 回复

我的 gem 应该已经是官方有推荐的了吧,不过可能位置不明显。

您好,我这边有需求做 Ruby SDK,五千,您如果有兴趣可以联系我,微信:a439714

需要 登录 后方可回复, 如果你还没有账号请 注册新账号