我已经使用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/