
1 scys 2015 年 3 月 4 日 槽点:eSockd也可能如屎一般,但目前是我尽了很大努力拉出来的了... 好吧,冲你这句话,我还看看erlang去,学习下语言 |
2 00 2015 年 4 月 9 日 厉害,单从repo 来看,repo 主对ranch、rabbitmq networking 非常熟悉。 另,请教个小问题,为什么如此青睐 阻塞 模式,而不像ejabberd 那样使用 半阻塞 模式? |
3 tencoldays OP @00 ejabberd 那样使用 半阻塞 模式 是指? |
4 00 2015 年 4 月 11 日 @tencoldays 我看ejabberd 的代码,是在controlling_proccess 会将 socket 设置为active once . controlling_proccess 将socket 交给gen_server 进程去处理,也就是不需要显式地执行gen_tcp:recv 操作。 再另外,我用esockd 做了cowboy的 TCP层(替换了ranch),每秒能够处理的请求有10%左右的提升,而且,esockd 的CPU 消耗要比ranch 小。 关于“显式地执行gen_tcp:recv” 的方式,我猜测,您是想用esockd 来替换ranch ? |
5 tencoldays OP @00 理解你意思了。 esockd和ranch一样,只负责到TCP accept。一旦socket连接建立后,如何处理比如阻塞、半阻塞、非阻塞,是自行选择的。 这里有示例: https://github.com/emqtt/esockd/tree/master/examples active_once的: https://github.com/emqtt/esockd/blob/master/examples/gen_server/src/gen_echo_server.erl |
6 00 2015 年 4 月 11 日 @tencoldays 多谢,只顾看源代码了,没仔细看example . |