我正在实现一个Ruby中的小型节俭(0.6.0)服务器,以便向具有多个连接(多个客户端)的另一个协议的代理角色发送到单个服务器。我希望能够在服务器端保持每个客户端的数据,并跟踪处理函数的多个调用中的“会话”参数。在节俭处理程序函数中获取对等地址
我目前使用Thrift::NonblockingServer
作为SimpleServer
似乎不允许并发连接。
我知道如何使用TCPSocket::peeraddr
但Thrift::NonblockingServer::IOManager::Worker::run
它读取帧创建一个临时MemoryBufferTransport
并传递作为输入/输出协议下到处理器,使得它似乎是信息不从那里传下来的。
有没有一个干净的方法来做到这一点? 我正在考虑重新定义上面提到的Thrift::NonblockingServer::IOManager::Worker::run
以在其他参数中包含fd或其他ID以处理或增强原始实例,但是因为我还必须担心生成的一个红宝石代码层(process_*
方法class Processor
)似乎有点沉重。
我不知道以前是否有人做过这样的事情。
谢谢!
p.s.这是类似的问题this C++ thrift question