我已经使用Sinatra已有一段时间了,我想通过websocket推送数据来向我的Web应用程序添加一些实时功能。

我已经成功地单独使用了gem'em-websocket',但无法编写一个具有sinatra Web服务器和Web-socket服务器的ruby文件。

我已经尝试过运行!或开始!方法在单独的线程中关闭,没有成功。

有没有人得到这个工作?

我希望将它们放在同一文件中,然后在两个服务器之间共享变量。

谢谢!

最佳答案

没有尝试过,但不要太用力:

require 'em-websocket'
require 'sinatra/base'
require 'thin'

EM.run do
  class App < Sinatra::Base
    # Sinatra code here
  end

  EM::WebSocket.start(:host => '0.0.0.0', :port => 3001) do
    # Websocket code here
  end

  # You could also use Rainbows! instead of Thin.
  # Any EM based Rack handler should do.
  Thin::Server.start App, '0.0.0.0', 3000
end

另外,Cramp具有可直接与Thin / Rainbows配合使用的websocket实现!您可能可以提取数据,因此甚至不需要在另一个端口上运行服务器。

关于ruby - Sinatra与EventMachine WebSockets一起合作是否成功?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2999430/

10-11 23:01
查看更多