Skip to content
This repository has been archived by the owner on Sep 25, 2023. It is now read-only.

如何连接非HTML5客户端? #35

Closed
chujun320 opened this issue Dec 3, 2012 · 24 comments
Closed

如何连接非HTML5客户端? #35

chujun320 opened this issue Dec 3, 2012 · 24 comments

Comments

@chujun320
Copy link

很感谢您的共享,但是我想要将这个服务器用在非HTML5的客户端,应该怎么运用呢?
谢谢!

@jiangzhuo
Copy link
Contributor

非HTML5也可以用websocket

@xiecc
Copy link
Collaborator

xiecc commented Dec 3, 2012

只要支持socket.io的客户端都可以连接pomelo, 目前socket.io几乎支持所有语言的客户端, 参考这个wiki的最后: https://github.com/LearnBoost/socket.io/wiki

如果需要封装得好一点的pomelo客户端, 目前只封装了 pomelo-jsclient,参考:
https://github.com/NetEase/pomelo-jsclien�t

我们接下来会封装好 flash, ios和android的客户端。
当然更欢迎第三方给我们封装各种语言的client。

@unalone
Copy link

unalone commented Dec 8, 2012

pomelo.request('gate.gateHandler.queryEntry', {uid: name}, function(data) {
//...
});
这样的一个调用出现在例子中,但是并没有连接服务器部分的内容出现,是否可以这么理解,即,pomelo客户端库里面封装了这部分内容?

现在我们需要从iOS原生客户端访问pomelo的服务器,是否需要在websocket之上封装额外的专门针对pomelo的协议呢?例如这个request发出去的内容是怎样的呢?

@py8765
Copy link
Collaborator

py8765 commented Dec 8, 2012

你说的很对,pomelo客户端库里面已经封装了连接服务器的内容。如果要从ios原生客户端访问pomelo的服务器,需要在websocket的基础之上封装针对pomelo的协议,具体可以参考pomelo-jsclient的代码;发出去的request包括消息路由地址,消息内容,消息时间等。

@unalone
Copy link

unalone commented Dec 8, 2012

所以,能提供一份消息写意说明么?看代码还是有猜的成分,呵呵,如果很简单的协议还好:)

Sent from my iPhone

On 8 Dec, 2012, at 23:53, py notifications@github.com wrote:

你说的很对,pomelo客户端库里面已经封装了连接服务器的内容。如果要从ios原生客户端访问pomelo的服务器,需要在websocket的基础之上封装针对pomelo的协议,具体可以参考pomelo-jsclient的代码;发出去的request包括消息路由地址,消息内容,消息时间等。


Reply to this email directly or view it on GitHub.

@songjiyuan
Copy link

临时学的js, 看了一下js-client的代码, 不知道理解的对不对

  1. HEAND, ID的网络字节序 + 路由长度(不得超过255), HEAND长度5个字
  2. 路由信息的json转码字符串
  3. msg数据包的json转码字符串

@halfblood369
Copy link
Contributor

其实现在的消息协议非常简单,socket.io还是以字符串的形式进行传输消息,如果客户端的代码稍微简单,请参考 https://github.com/NetEase/pomelo-protocol ,主要内容和客户端pomelo-client中的消息协议差不多,不过有更多的注释和测试用例,可以帮助你理解。以后会在数据压缩和字节传输等方面继续完善现有的消息协议。

@unalone
Copy link

unalone commented Dec 9, 2012

那是否可以理解为还不支持二进制数据传输呢?数据的加密有支持么?谢谢。

Sent from my iPhone

On 9 Dec, 2012, at 15:42, halfblood notifications@github.com wrote:

其实现在的消息协议非常简单,socket.io还是以字符串的形式进行传输消息,如果客户端的代码稍微简单,请参考 https://github.com/NetEase/pomelo-protocol ,主要内容和客户端pomelo-client中的消息协议差不多,不过有更多的注释和测试用例,可以帮助你理解。以后会在数据压缩和字节传输等方面继续完善现有的消息协议。


Reply to this email directly or view it on GitHub.

@songjiyuan
Copy link

协议中那个ID有什么用, 我看实现觉得这个ID就只是递增而已, 对TCP而言不需要保证顺序, RPC通过route来调用, 数据在msg;

@songjiyuan
Copy link

我认为数据加密在编解码接口处理就好了, 要传二进制也没问题

@halfblood369
Copy link
Contributor

是的,目前还不支持二进制传输,socket.io的二进制传输本来就比较困难,好像没有提供默认的支持。不过我们会想办法在字节压缩并传输方面研究,提供解决方案的。

@unalone
Copy link

unalone commented Dec 9, 2012

那样的话……那不是流量会很大?在移动网络条件下的话效率会有很大影响吧?其实倒不如增加原生socket支持,毕竟,socket部分和服务器逻辑并没有那么大的耦合度,只要额外定义一个二进制协议就可以了,比如protobuf。

Sent from my iPhone

On 9 Dec, 2012, at 15:56, halfblood notifications@github.com wrote:

是的,目前还不支持二进制传输,socket.io的二进制传输本来就比较困难,好像没有提供默认的支持。不过我们会想办法在字节压缩并传输方面研究,提供解决方案的。


Reply to this email directly or view it on GitHub.

@songjiyuan
Copy link

我看了一下WebSocket, 是支持二进制传输的啊 , socket.io不支持可以自行添加么?

@unalone
Copy link

unalone commented Dec 9, 2012

我估计是因为pomelo协议的缘故。

Sent from my iPhone

On 9 Dec, 2012, at 16:07, songjiyuan notifications@github.com wrote:

我看了一下WebSocket, 是支持二进制传输的啊 , socket.io不支持可以自行添加么?


Reply to this email directly or view it on GitHub.

@halfblood369
Copy link
Contributor

是的,这会给通讯造成很大的压力。可以从两个方面降低数据传输的压力:1.减少不必要数据的传输。2.字节压缩传输。关于你提到的原生socket,我们会考虑的。

@halfblood369
Copy link
Contributor

@unalone 这与pomelo协议没有关系,pomelo数据协议目前还是很简单的。你可以研究下socket.io,就明白了……

@songjiyuan
Copy link

是js的限制么, 看了一下socket.io的协议, 对数据体没有特殊的要求, 还是序列化时不支持?

@halfblood369
Copy link
Contributor

@songjiyuan 对,是客户端的限制!你可以看看socket.io其中的一个issue,关于这个讨论的比较详细:socketio/socket.io#680

@songjiyuan
Copy link

那如果用AS3来通信, 到时候这个限制应该就不存在了吧, 服务器上的socket.io应该可以支持是吗?

@halfblood369
Copy link
Contributor

关于字节压传输方面的工作我们正在研究,有了解决方案会很快告诉大家的……

@songjiyuan
Copy link

我想到一个方案, HTTP协议支持二进制传输, 可以封装一层框架协议, 使用POST提交, 并在server响应时自动处理好协议并将数据抛入到消息路由通道中

@ghost
Copy link

ghost commented Dec 10, 2012

可以考虑用Google Protocol Buffer试试

@lovoror
Copy link

lovoror commented Dec 10, 2012

非常需要二进制传输 希望考虑下

在 2012年12月10日星期一,yourihua 写道:

可以考虑用Google Protocol Buffer试试


Reply to this email directly or view it on GitHubhttps://github.com//issues/35#issuecomment-11181760.

@xiecc
Copy link
Collaborator

xiecc commented Dec 18, 2012

所有中文问题的issue请到这里来提: https://github.com/NetEase/pomelo-cn/issues/
以后所有在 https://github.com/NetEase/pomelo/issues 下提的中文问题将被关闭, 并转到pomelo-cn
谢谢大家配合

@xiecc xiecc closed this as completed Dec 18, 2012
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants