gpt4 book ai didi

ruby - Websocket 连接关闭而不在 Shotgun 服务器上打开

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:55 35 4
gpt4 key购买 nike

我有一个使用 Websockets 的 Sinatra 应用程序。
当我使用 ruby app.rb 运行我的应用程序时,它可以正常工作,但当我尝试使用 shotgun app.rb 运行它时,它不起作用。

这是在我的 sending_out.erb 中:

<script>
$(document).ready(function(){
connection = new WebSocket('ws://' + window.location.host + window.location.pathname);
connection.onopen = function(){
$("#msgs").append('Connection opened'+"<br>")
};
connection.onmessage = function(e){
$("#msgs").append(e.data+"<br>");
};
connection.onclose = function() {
$("#msgs").append('Connection closes from view'+"<br>");
};
$("form").submit(function(){
connection.send( $("input").val() );
});
});
</script>

这是在我的 app.rb 中:

require 'sinatra-websocket'
set :sockets, []
get '/sending_out' do
request.websocket do |connection|
connection.onopen do
connection.send("Hello World!")
settings.sockets << connection

connection.send("opened")
connection.send("went")

end
connection.onmessage do |msg|
EM.next_tick { settings.sockets.each{|s| s.send(msg) } }
end

connection.onclose do
warn("websocket closed")
settings.sockets.delete(ws)
end
end
end

必须显示

Connection opened
Hello World!
opened
went

当我进入页面时。但它只显示

Connection closes from view

使用霰弹枪

并且在控制台中显示与“ws://127.0.0.1:9393/sending_out”的WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:500

使用 Shotgun 运行 Websockets 有问题吗?

最佳答案

Shotgun 的主要特点是它会在每次请求时自动重新加载您的整个代码,我认为这也可能是您面临的问题。

Shotgun 应该只用于开发。

出于生产目的,您还有许多其他可用选项:

可以在 https://www.digitalocean.com/community/tutorials/a-comparison-of-rack-web-servers-for-ruby-web-applications 上找到 ruby​​ 服务器的比较

关于ruby - Websocket 连接关闭而不在 Shotgun 服务器上打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26590772/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com