
我的问题是,这是从流/队列中读取并将数据传递到通道的正确方法吗?有更好的/任何其他方法来做到这一点吗?
require 'em-websocket'require 'torqueBox-messaging'class WebsocketServer def initialize @channel = EM::Channel.new @topic = TorqueBox::Messaging::topic.new('/topics/mytopic') end def start EventMachine.run do topic_to_channel = proc do while true msg = @topic.receive @channel.push msg end end EventMachine.defer(topic_to_channel) EventMachine::WebSocket.start(:host => "127.0.0.1",:port => 8081,:deBUG => false) do |connection| connection.onopen do sID = @channel.subscribe { |msg| connection.send msg } connection.onclose do @channel.unsubscribe(sID) end end end end endendWebsocketServer.new.start解决方法 这没关系,但是EM.defer会产生20个线程,所以我会为你的用例避免它.一般来说,我会完全避免EM,特别是Java反应堆,因为我们从未完成它. TorqueBox有一个原生的stockets over websockets解决方案,这将是一个更好的方式在这个上下文,并解决了一堆其他封装挑战.
如果你真的想坚持使用EM,那么我会使用Thread.new而不是延迟,以避免19个空闲线程无缘无故地占用额外的RAM.
总结以上是内存溢出为你收集整理的ruby – EventMachine和em-websocket – 从队列中读取并推送到频道全部内容,希望文章能够帮你解决ruby – EventMachine和em-websocket – 从队列中读取并推送到频道所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)