Tag: websocket

如何通过rails上的ruby中的websocket发送保活包

我想寄一个 “让客户保持活力” 我的websocket连接每30秒发送一条消息。 这是我在websocket初始化程序中的代码如下所示: ws = WebSocket::Client::Simple.connect ‘wss://bitcoin.toshi.io/’ ws.on :message do |msg| rawJson = msg.data message_response = JSON.parse(rawJson) end ws.on :open do ws.send “{\”subscribe\”:\”blocks\”}” end ws.on :close do |e| puts “WEBSOCKET HAS CLOSED #{e}” exit 1 end ws.on :error do |e| puts “WEBSOCKET ERROR #{e}” end 没有任何“保持活力”,连接将在大约45秒内关闭。 我应该如何发送’心跳’数据包? 似乎连接由他们的服务器关闭,而不是我的。

处理Sinatra应用程序中的事件流连接

有一个使用 Konstantin Haase的服务器发送事件的聊天应用程序的一个很好的例子 。 我试图运行它并遇到回调问题(我使用Sinatra 1.3.2并使用Chrome 16浏览)。 它们根本不运行(例如在页面重新加载之后),因此连接数量正在增长。 此外,连接在30-60秒内关闭,除非设置定期计时器以发送空数据,如康斯坦丁在其他地方所建议的那样。 你能复制一下吗? 如果是,是否有可能以某种方式解决这些问题? WebSockets在这方面无缝工作…… # ruby get ‘/stream’, provides: ‘text/event-stream’ do stream :keep_open do |out| EventMachine::PeriodicTimer.new(20) { out << "data: \n\n" } # added settings.connections << out puts settings.connections.count # added out.callback { puts 'closed'; settings.connections.delete(out) } # modified end end # javascript var es = new […]

如何向rails / actioncable中除发件人之外的所有客户端发送消息?

在socket.io中,您可以向除发件人之外的所有客户端发送消息,例如: socket.broadcast.emit(‘user connected’); 但在rails / actioncable中,怎么做? class BoardChannel < ApplicationCable::Channel def subscribed stream_from "board:#{params[:board]}" end def speak # client will call @perform('speak') result = do_something() # how to send 'result' to all client except sender? end 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’ […]

Actioncable连接用户列表

我在ActionCable中validation用户是这样的: module ApplicationCable class Connection < ActionCable::Connection::Base identified_by :current_user def connect self.current_user = find_verified_user logger.add_tags 'ActionCable', current_user.name end protected def find_verified_user if verified_user = User.find_by(id: cookies.signed[:user_id]) verified_user else reject_unauthorized_connection end end end end 是否有可能获得连接用户列表? 我用谷歌搜索,但发现只有这个stackoverflow问题: 第一 , 第二

Websockets和Rails

我想开发一个基于带有websockets的Rails 4.2(Ruby 2.1.0)的Web文件管理器。 Websocket-rails似乎不错,但已经死了。 em-websocket缺少文档(或者如果你有一个很好的链接)并且不是完全开源的。 使用带有rails的websocket的最佳方法是什么?

你如何在Rails应用程序中“生成”一个EventMachine?

我有一个Rails应用程序,我希望为它添加某种WebSocket支持。 从各种Google搜索,似乎最好的基于Ruby的WebSocket解决方案是在EventMachine上运行的em-websocket 。 我想知道是否有办法将EventMachine反应器“集成”到Rails中? 我在哪里放置初始化代码? 这是实现这个目标的正确方法吗? 我已经看到这个回到Sinatra的例子来做一个EventMachine GET请求,但这并不是我想要的。 任何帮助表示赞赏。

使用Web套接字进行点对点文件共享

这是一个理论问题,但是,我需要为我的基于Web套接字的聊天应用程序添加文件共享function。 我可以使用像Amazon S3这样的服务通过发布文件的链接来上传要共享的文件,但这涉及上传可能已经可以通过本地网络访问的文件(例如,在同事之间共享文件) 。 所以我认为有可能通过现有的Web套接字连接以某种方式隧道上传/下载/传输。 但是,我对HTTP文件传输知之甚少,不知道如何实现它的下一步。 Web套接字是否存在限制,以防止这种情况发生? 我正在使用Ruby和EventMachine来实现我当前的Web套接字。 如果您能够提供高水平的概述以帮助我入门,那将非常感激。