- 客户端: 张焯琦 曾展鹏
- 服务端: 李雨足 潘锦博
先完成需要两端通信的任务
-
找适合的云服务器,架设好平台,创建所有空功能。根据下面的通信细节,所有功能不实现细节,直接返回基本数据。
-
优先实现注册功能, 登陆功能
-
Biu式加好友
-
聊天
所有功能的实现细节在下面有详细描述
服务端和客户端通信中
请求一律采用HTTP协议的POST方法
返回的内容(Body of Response)一律采用JSON格式进行封装
极长慎点 精通HTTP协议
###1.JPush极光推送 通过推送实现好友添加、聊天等功能
###2.服务器
###3.Python Django框架
###4.安卓SDK
###5.百度定位SDK
因为分客户端和服务端进行分工,所以该栏目比较强调通信的内容和细节,便于以后两方接入 时接口不一致导致工作量增大,仅仅客户端的功能(软件锁、安全聊天)容后再议
注意: 请服务端针对每一个服务添加测试样例————即自己喂数据给自己进行测试
建库建表 使用Django的ORM框架搞定对象映射
ps: 为了方便起见,我们采用一个服务对应一个url
urlpatterns = patterns(",
(r'^register$', 'biu.user.register'),
(r'^login$', 'biu.user.login'),
(r'^logout$', 'biu.user.logout'),
(r'^heartbeat$', 'biu.user.heartbeat'),
# and so on
)
通信细节:
- register:
request: username, nickname, password(with MD5), etc 用户还需要什么属性可以再讨论一下
response: code(0 => ok, 1 => username already exist, 2 … etc)
- login:
request: username, passowrd(with MD5)
response: code(0 => ok, 1 => username not exist, 2 => password not correct)
- logout:
request: username
response: code(0 => ok, always succeed)
客户端会定时通知服务端其位置信息(经纬度),服务端保留所有用户位置信息
当客户端发起好友寻找请求时,服务端就可以返回符合条件的用户
通信细节:
- heartbeat: (every 1min or 30s will send this request)
request: username, longitude, latitude
response: empty response is ok
- search:
request: username
response: a json list with following format
{
"cod" : 0, # 0 => ok, 1 => username not exist
"count": 3,
"users": [
{"nickname": "Judy", "etc attributes"},
{"nickname": "Gay", "etc attributes"},
{"nickname": "Fuck", "etc attributes"}
]
}
图片解析:当用户A对用户B发出一句话时,用户A向服务器发出请求,服务器向极光推送发出推送请求,由极光负责把信息推送至B
Why JPush: 极光推送能够保存离线消息,能够做到离线聊天。
- add:
request: username, target
response: code(0 => ok, 1 => username/target not exist, 2 => not login)
- send:
request: username, target, msg
response: code(0 => ok, 1 => username/target not exist, 2 => not login)
此功能只需在客户端实现,在聊天界面会有遮罩层阻挡