SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4454|回复: 0
打印 上一主题 下一主题

[webrtc] 服务器

[复制链接]

186

主题

346

帖子

2456

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2456
跳转到指定楼层
楼主
发表于 2016-11-16 12:16:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ancientcc 于 2017-1-4 15:06 编辑

为熟悉IRC,可下载个IRC客户端试着发送各样命令。像X-Chat


  • 只写和客户端交互的有关部分,不涉及用什么语言编写服务器、如何设计用户表格等等。
  • 按功能把服务器分两个,一是信令服务器,二是IRC服务器。当然,信令服务器不仅仅只处理信令,字面内容只是说明了这服务器的主要工作。
  • 信令服务器用Json格式。
  • IRC服务器遵循RFC1459定义。将来要对它进行功能扩展,也须要向下兼容RFC1459。
  • 为什么用IRC?1)IRC已用了十多年,它的缺点、优点可说是被理解得很透彻了,这有助于将来对该协议进行增强,像能传图像。2)很多开源社区都在用IRC,我是在想,通过分离信令服务器和IRC服务器,是否就能让那些IRC服务器通过较简单修改,甚至不用改就能支持我们视频聊天的IRC,即我们提供信令服务器,然后IRC就用它们的。
  • 在用户注册和管理上,IRC存在严重问题,像1)你经常使用的昵称有可能将来被谁占用;2)不能用中文作为呢称。为此注册上须依赖信令服务器。
  • 一个app自然就成了一个群。但群不仅可以是app,还可以是用户的自建群,类似微信群。当然,自建群等后面版本再实现。
  • 先实现明文消息,将来须支持SSL加密。


注1:暂不考虑PASSWORD。

查询IRC服务器
  • app。每个app必须定义一个叫bundle id的字符串,像com.leagor.studio、com.leagor.kingdom。服务器检查这字段,如果是未注过的,它检查该app有多少人在线,一旦超过N个,命令失败。
  • secretkey。向网页注册app时,成功后会得到一个叫secretkey的字符串,可认为就是密码。对注册过app,这里填写那个secretkey,未注册过app则置空。
  • signinid、password。对注册过的用户,signinid是手机号,password是密码。对未注册过用户,signinid固定是“guest”,密码留空。
  • ircserver。处理该app的IRC服务器域名、端口号。
  • ircnick。登录到IRC服务器时用的昵称。发向IRC的“NICK”请求后跟这个昵称,这个昵称要的是唯一性,像类似这样格式:rs8644615546,后面那串数字保证了唯一性。
  • nick。显示用的昵称。对注册过用户,它是存在用户表中的字段,对未注册过用户,由服务器生成一个昵称。
  • title。app名称
  • desc。app的简短描述。


查询指定app资料(虽然app和自建群都是群,它不能用于查询自建群,查询自建群用IRC中的LIST命令)
  • key。要查询的app的bundle。
  • title、desc。等同“获取IRC服务器”中的title、desc。


匿名登录逻辑。app一启动后就执行。
  • app向SignalingServer发ircServer请求。signin字段置guest。
  • SignalingServer计算出一个全局唯一标识,如7001。并向app返回ircResponse应答,nick置为7001。

到此app看到自已是7001。
到此app已能文字聊天(irc),虽然它不知道7002是谁,但它确实能和7002聊天了。


视频聊天逻辑。假设7001想和7002聊天。
  • 7001、7002通过方法知道彼此是谁,像之前的文字聊天、QQ、微信、或电话。
  • 接下消息见这贴。逻辑从7002首先按下“呼叫”按钮开始,信令服务器基本交互流程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2024-11-1 08:06 , Processed in 0.087669 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表