`sinatra/websocketio` 的基本用法 gem
Basic use of `sinatra/websocketio` gem
我正在尝试使用 sinatra/websocketio
gem 并且我基本上是从他们的自述文件中复制粘贴的,但我无法让它工作。我错过了什么吗?我认为套接字端口和 Sinatra 端口应该是相同的。我感谢任何帮助或提示。
JavaScript:
<script>
var io = new WebSocketIO().connect();
// io.on("log", function(value) {
// alert(value)
// });
</script>
Sinatra 服务器:
require 'sinatra'
require 'sinatra/websocketio'
set :port, 5005
set :bind, '0.0.0.0'
set :public_folder, "#{File.dirname(__FILE__)}/views"
set :websocketio, port: 9000
enable :sessions
get '/list' do
"Hello world!"
end
get '/' do
erb :index, layout: :layout
end
JavaScript 端无法连接:
看起来像Sinatra::WebSocketIO
only starts up once an EventMachine reactor is running. This is the case when running a EventMachine-based Rack server (such as Thin)。将 Rack 服务器切换为 Thin 可以很好地启动 WebSocketIO 服务器。
如果不能切换到 Thin,您还可以在 config.ru
:
中启动 EventMachine 反应器
require_relative "./server" # assuming your server code is in `./server.rb`
run Sinatra::Application
# EventMachine.run blocks the active thread, therefore it's started in a separate one
Thread.new { EventMachine.run }
然后可以使用 bundle exec rackup -p 5005
启动 Rack 服务器
我正在尝试使用 sinatra/websocketio
gem 并且我基本上是从他们的自述文件中复制粘贴的,但我无法让它工作。我错过了什么吗?我认为套接字端口和 Sinatra 端口应该是相同的。我感谢任何帮助或提示。
JavaScript:
<script>
var io = new WebSocketIO().connect();
// io.on("log", function(value) {
// alert(value)
// });
</script>
Sinatra 服务器:
require 'sinatra'
require 'sinatra/websocketio'
set :port, 5005
set :bind, '0.0.0.0'
set :public_folder, "#{File.dirname(__FILE__)}/views"
set :websocketio, port: 9000
enable :sessions
get '/list' do
"Hello world!"
end
get '/' do
erb :index, layout: :layout
end
JavaScript 端无法连接:
看起来像Sinatra::WebSocketIO
only starts up once an EventMachine reactor is running. This is the case when running a EventMachine-based Rack server (such as Thin)。将 Rack 服务器切换为 Thin 可以很好地启动 WebSocketIO 服务器。
如果不能切换到 Thin,您还可以在 config.ru
:
require_relative "./server" # assuming your server code is in `./server.rb`
run Sinatra::Application
# EventMachine.run blocks the active thread, therefore it's started in a separate one
Thread.new { EventMachine.run }
然后可以使用 bundle exec rackup -p 5005