- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我能够让我的 Action Cable 正常工作,订阅也可以正常工作......
目前,我有一个简单的 HTML 页面,上面有一些 JS 用于连接和记录 WebSocket 消息。
这是我在我的 HTML 页面上使用的脚本(现在用于测试)
var socket = new WebSocket('ws://localhost:3000/cable');
socket.onopen = function(e) {
console.log("Connection established")
}
socket.onclose = function(e) {
console.log("Error occurred.");
clients.Remove(socket)
}
socket.onmessage = function(e){
var server_message = e;
console.log(server_message);
}
JSON.stringify(
{
"command": "message",
"identifier": JSON.stringify({"channel": "tv_channel_1e80f418-08b0-478a-a77c-67a052934433" }),
"data": {
"action": "start_broadcasting"
}
}
)
我的 Rails 输出已确认订阅存在,我的页面是控制台记录 ping 消息和来自 websocket 的欢迎消息。
如果我尝试广播任何东西作为测试(通过控制台或其他方式)
ActionCable.server.broadcast "tv_channel_1e80f418-08b0-478a-a77c-67a052934433", {message: "oh hai"}
它没有被客户端接收到...
我已经通过 brew 安装了 Redis,并在我的 cable.yml 文件中安装了以下内容
development: &development
adapter: redis
url: redis://localhost:6379
test:
adapter: redis
url: redis://localhost:6379
production:
adapter: redis
url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
channel_prefix: can-i-haz-dashboard-server_production
我可以通过 redis-cli 确认消息正在传递到 redis 数据库。
我能找到的唯一答案涉及安装 redis。
我的 connection.rb 文件( channel 编码用于测试)
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_channel
def connect
self.current_channel = ::Channel.find("1e80f418-08b0-478a-a77c-67a052934433")
end
private
def find_channel
end
end
end
我的电视 channel .rb
class TvChannel < ApplicationCable::Channel
def subscribed
# stream_from "some_channel"
stream_from "tv_channel_#{current_channel.id}"
ActionCable.server.broadcast "tv_channel_#{current_channel.id}", 'Test message'
end
def unsubscribed
# Any cleanup needed when channel is unsubscribed
end
def start_broadcasting
"hello"
end
end
我希望我做错的很简单。任何帮助将不胜感激。
编辑:抱歉,不确定我是否足够清楚。我的 Rails 应用程序是仅用于 websocket 的 API,没有我正在为其提供服务的 View 。HTML 页面是独立的,不在 Rails 环境中。
最佳答案
我希望如果不出意外,这对其他人有帮助。
我需要实际发送订阅字符串。
socket.onopen = function(e) {
console.log("Connection established")
socket.send(subscribeString)
}
subscribeString = JSON.stringify(
{
"command": "subscribe",
"identifier": JSON.stringify(
{"channel": "channels:1e80f418-08b0-478a-a77c-67a052934433" }
)
}
)
关于javascript - Action Cable 仅向客户端发送欢迎和 ping 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57320156/
我正在尝试使用 rails 5.0.0beta3 和 websockets 运行一个应用程序。我在本地进行了所有开发工作,但在生产中,我在浏览器的控制台中收到了此响应: “WebSocket 连接失败
我是一名 wp8 开发人员,正在寻找一种“无需电缆”在设备上部署应用程序的方法。我在网上搜索过,但找不到任何有用的东西。 我知道 WP8 SDK 中的“应用程序部署”工具,并且我的手机也已解锁。我知道
我已经在我们的 Rails 应用程序上设置了一个 websocket,并且已经能够从同一台服务器连接和接收数据。 我现在所做的方法是创建一个这样的套接字: class UsersChannel
我配置了 Action 电缆,现在我想使用以下js函数 $('.scroll-bar').scrollTop(row); 提交消息后向下滚动聊天 所以我尝试将之前的代码包含在 app/assets/c
我是一名 wp8 开发人员,正在寻找一种“无需电缆”在设备上部署我的应用程序的方法。我在网上搜索过,但找不到任何有用的信息。 我知道 WP8 SDK 中的“应用程序部署”工具,我的手机也是开发人员解锁
提示未显示“”之间的文本 require(["wijmo.wijbarchart"], function () {$(document).ready(function () { $("#wijbarc
David has a great video on how to use Action Cable for Rails 5 ,对我来说,我使用的是 Rails 5 上的 beta 3 版本。 问题是
我能够让我的 Action Cable 正常工作,订阅也可以正常工作...... 目前,我有一个简单的 HTML 页面,上面有一些 JS 用于连接和记录 WebSocket 消息。 这是我在我的 HT
我正在试用 Action Cable on the rails 5 预发布版本。每当我启动服务器时,我都会收到此错误 [Action Cable] Redis reconnect failed 多次重
我目前有一个 Rails 5 应用程序作为我的后端,我们可以称之为“核心”。我还有另一个 Rails 5 应用程序作为我的前端,它为 AngularJS 客户端提供服务,我们可以称之为“前端”。这是两
这已经在这里问过了,但是旧方法(example 和 example)似乎不再适用于 Rails 6,因为您不能在 中使用 App.channel应用程序/javascript/channels/you
在我的应用程序中实现 Web Sockets 我很困惑哪个 gem 更好。我发现了很多不同的机会,但是,有些很难区分。 最后,我选择了 Action Cable(Rails 5 原生部分)和 Faye
在rails 4的websocket-rails中,我使用下面的客户端框架javascript并且工作正常 var dispatcher = new WebSocketRails('//ws:loca
几个月以来,我一直在努力了解操作电缆。请帮忙。 我有一个“连接” - 我无法设置 identified_by :current_user因为此端点还需要由使用 WebSocket 的外部 API 使用
我的应用程序在 Heroku 上使用 Action Cable 时遇到问题: 与“ws://localhost:3000/cable”的 WebSocket 连接失败:连接建立时出错:net::ERR
我要从事的项目已经在android平台上开发。只要 USB 连接设备与桌面,Android 应用程序就会从桌面系统接收数据。我很确定,要开发这个,我需要使用 ExternalAccessory.Fra
我想测试一些网络错误情况,但我没有网线。 TCP 客户端和服务器应用程序都运行在同一系统上。 使用像 TCPView 这样的工具来关闭连接而不是拔掉网络电缆是否是一个真实的模拟? 更新: 使用 TCP
我在 Linux 上有一个大型 C++ 应用程序,其中构建并链接了许多第一方和第三方库。 应用程序的某些部分应该在不访问文件系统或网络的情况下执行(特别是加载网络文件)。我们定期发现此操作确实加载文件
浏览 RoR Action 电缆指南 http://edgeguides.rubyonrails.org/action_cable_overview.html#subscription-adapter
一段时间以来,我一直在努力使事情顺利进行,但没有成功。我也做了很多研究,徒劳无功。我真的希望有人能够帮助我找到该问题的根本原因: 我正在尝试使用 IP 地址从另一台计算机(实际上是 arduino 以
我是一名优秀的程序员,十分优秀!