在超时之前在websocket中发送大文件

我正在使用Faye和EventMachine打开另一台服务器的套接字。 如果服务器未检测到活动,则服务器超时。 如何发送文件(二进制编码),以便服务器不会超时?

这就是我所拥有的:

media_path = "/path/to/media/file" EM.run { ws = Faye::WebSocket::Client.new(uri) ws.on :open do |event| puts "Opening socket" ws.send(File.read(media_path)) end ws.on :message do |event| puts "Recieving message" end ws.on :close do |event| ws = nil EM.stop end } 

您需要批量发送文件 。 像这样的东西:

 ws.on :open do |event| puts "Opening socket" File.open('filename','r') do |f| ws.send(f.gets) end end 

你用这种方式解决了另一个问题:你不会将整个文件放在RAM +中,你会更快地发送它。 你可以阅读有关nodejs流的信息 ,有一个类似的操作原理。

对于如何使用Rails通过Web套接字发送二进制文件,这有点重复虽然这个问题确实是第一个……

请查看我对该问题的回答,以获取在发送文件时不会阻止您的申请的其他选项。