我有一段时间设置现场重装。也许其他人能看到我错过了什么。首先是错误(来自Chrome):
WebSocket connection to 'ws://localhost:35729/livereload' failed: Connection closed before receiving a handshake response
WebSocket connection to 'ws://localhost:35729/livereload' failed: Error in connection establishment: net::ERR_TUNNEL_CONNECTION_FAILED我安装的是:
我对我的应用程序所做的更改应该使它能够工作,如下所示:
# Gemfile
gem "guard", ">= 2.2.2", :require => false
gem "guard-livereload", :require => false
gem "rack-livereload"
gem "rb-fsevent", :require => false
# development.rb
config.middleware.insert_after(ActionDispatch::Static, Rack::LiveReload)我也在middleware.use上尝试过这一点,但仍然得到了相同的错误。我检查了一下端口35729上是否还有其他的观察者,没有什么明显的发现。
任何关于如何得到这项工作的建议都是值得赞赏的!谢谢。
发布于 2015-04-05 20:59:06
你的配置看起来是正确的。以下是要采取的一些故障排除步骤:
可能性1:不兼容的LiveReload版本
也许guard-livereload (服务器)和rack-livereload (客户端)的版本是不兼容的。将这两个版本升级到安全的最新版本:
bundle update guard-livereload rack-livereload可能性2:端口35729被占用
也许其他一些进程正在监听端口35729,从而导致您在Chrome中看到的连接错误。若要检查是否为这种情况,请退出保护进程,然后运行:
netstat -an | grep 35729如果您看到类似的情况,这意味着另一个进程/应用程序正在监听该端口:
tcp4 0 0 *.35729 *.* LISTEN 您可以尝试更改LiveReload以使用不冲突的端口。在Guardfile中添加:port选项,如下所示:
guard :livereload, :port => "56789" do
...
end您还需要在development.rb中进行类似的更改:
config.middleware.use(Rack::LiveReload, :live_reload_port => 56789)可能性3:行为不当的代理
ERR_TUNNEL_CONNECTION_FAILED错误是Chrome在HTTP无法转发web请求时给出的消息显然。如果配置了HTTP代理,这可能是问题所在。
要确保代理不干扰到本地LiveReload服务器的连接,请转到→网络并选择活动网络适配器(例如WiFi、以太网)。然后按Advanced并转到“代理”选项卡。确保列出这些条目:
localhost
127.0.0.1https://stackoverflow.com/questions/29461827
复制相似问题