Tag: em websocket

访问rails线程中的变量

我正在构建一个基于网络的幻灯片放映的应用程序,其中一个“主”用户可以在幻灯片之间移动,每个人的浏览器都会跟随。 为此,我使用websockets和Redis作为全局通道来发送消息。 每个连接的客户端都有一个存储在数组中的信息@clients 。 然后我有一个单独的线程用于订阅Redis通道,其中定义了一个’on.message’块,它应该向@clients数组中的每个人发送一条消息,但该块在该块内是空的(在任何地方都不是空的)否则在模块中)。 几乎遵循这个例子: https : //devcenter.heroku.com/articles/ruby-websockets 相关代码,位于自定义中间件类中: require ‘faye/websocket’ require ‘redis’ class WsCommunication KEEPALIVE_TIME = 15 #seconds CHANNEL = ‘vip-deck’ def initialize(app) @app = app @clients = [] uri = URI.parse(ENV[‘REDISCLOUD_URL’]) Thread.new do redis_sub = Redis.new(host: uri.host, port: uri.port, password: uri.password) redis_sub.subscribe(CHANNEL) do |on| on.message do |channel, msg| puts @clients.count ### prints […]

在超时之前在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 }

与Ruby和EM :: WebSocket :: Server的WebSocket握手

我正在尝试使用JavaScript在我的Rails应用程序中创建一个简单的WebSocket连接。 我得到以下内容: 与’ws:// localhost:4000 /’的WebSocket连接失败:WebSocket握手期间出错:’Sec-WebSocket-Accept’标头丢失 我究竟做错了什么? 这是我的代码: JavaScript的: var socket = new WebSocket(‘ws://localhost:4000’); socket.onopen = function() { var handshake = “GET / HTTP/1.1\n” + “Host: localhost\n” + “Upgrade: websocket\n” + “Connection: Upgrade\n” + “Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==\n” + “Sec-WebSocket-Protocol: quote\n” + “Sec-WebSocket-Version: 13\n” + “Origin: http://localhost\n”; socket.send(handshake); }; socket.onmessage = function(data) { console.log(data); }; ruby: require ‘rubygems’ […]