Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Invite or Join? #58

Closed
liuyanghejerry opened this issue Apr 4, 2015 · 10 comments
Closed

Invite or Join? #58

liuyanghejerry opened this issue Apr 4, 2015 · 10 comments

Comments

@liuyanghejerry
Copy link

Hi, 我想请问一下目前roomObj.join的语义,究竟是invite还是join

以我目前的实验来看,sign请求发出时action写的是invite,请求中members有且只有一个id,就是用户自己。

单纯从这个roomObj.join的角度来说,这应该是一个join语义,但发出的却是invite请求。

这个奇怪的现象将直接影响后端sign的内部实现。

我认为这很可能是一个BUG。

@wangxiao
Copy link
Contributor

wangxiao commented Apr 7, 2015

join 是添加自己。同时有一个 add 方法,相当于你说的 invite。

@liuyanghejerry
Copy link
Author

那为什么roomObj.join向后台sign接口发出的请求,带的action是invite而不是join呢

@wangxiao
Copy link
Contributor

wangxiao commented Apr 8, 2015

这个涉及到底层实现,SDK 层面暴露的是一个更加语义化的,包装之后的概念。
底层实现上面并没有对很多事情做封装,所以你会看到很多混在一块的命名和命令,还是以 SDK 层面为准。

@wangxiao wangxiao closed this as completed Apr 8, 2015
@liuyanghejerry
Copy link
Author

这个奇怪的现象将直接影响后端sign的内部实现。

@wangxiao wangxiao reopened this Apr 8, 2015
@wangxiao
Copy link
Contributor

wangxiao commented Apr 8, 2015

可以说下具体问题,而不是对于这个问题的讨论。

@liuyanghejerry
Copy link
Author

如果roomObj.join向后台sign请求时发送的action是invite,那后端sign接口也就相应的需要用invite相关的接口来处理。在demo中可能大家会将不同action的sign实现放在一个函数里,但是真正写业务的时候,我是分开处理的,比如某些用户是可以join某个group的,某些用户是可以kick用户的。

sign接口,在后端实现里会分发到signJoin、signInvite、signKick等等一系列函数当中。

如果roomObj.join向后台sign请求时发送的action是invite,那signJoin这个函数其实就没有用处了?这样的实现不是很别扭吗。

@liuyanghejerry
Copy link
Author

来个实例,更清楚一些:

function handleGroupActions(client_id, conv_id, member_ids, action, request, response) {
  switch(action) {
    case 'open':
    handleGroupOpen(client_id, conv_id, member_ids, request, response);
    break;
    case 'kick':
    handleGroupKick(client_id, conv_id, member_ids, request, response);
    break;
    // oops,好像没有任何行为会进入join了
    case 'join':
    handleGroupJoin(client_id, conv_id, request, response);
    break;
    // 虽然这里是invite,但是join语义却最终被分发到了invite当中
    case 'invite':
    handleGroupInvite(client_id, conv_id, member_ids, request, response);
    break;
  }

}

@sunng87
Copy link
Contributor

sunng87 commented Apr 9, 2015

@liuyanghejerry 这里 invitekick 确实有些迷惑,目前这两个值只是作为常量的名字。join 和 invite 的动作在签名时都是用 invite 作为 action 字段的值。join 只是成员 id 和自己 id 完全相同的特殊 invite

我们的官方文档关于这块的说明有点小问题,我已经发了一个 PR 修改了。

@liuyanghejerry
Copy link
Author

感谢澄清和修正文档,如果方便的话顺便再修正一下文档,文档中 https://leancloud.cn/docs/js_realtime.html#权限和认证 中指向的详情文档实际应为 https://leancloud.cn/docs/realtime_v2.html#权限和认证 ,而不是目前的 https://leancloud.cn/docs/realtime.html#权限和认证

@wangxiao
Copy link
Contributor

wangxiao commented Apr 9, 2015

好的,感谢反馈。已修正 wangxiao/leancloud-docs@6e119d8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants