gpt4 book ai didi

ruby-on-rails - Action Cable 和 AngularJS 跨域集成

转载 作者:行者123 更新时间:2023-12-04 17:46:14 24 4
gpt4 key购买 nike

我目前有一个 Rails 5 应用程序作为我的后端,我们可以称之为“核心”。我还有另一个 Rails 5 应用程序作为我的前端,它为 AngularJS 客户端提供服务,我们可以称之为“前端”。这是两个完全独立的 Rails 5 应用程序,具有完全不同的域。

基本上,我正在尝试通过 Core 集成 Action Cable 并让它与 Front 通信。我在前台使用此服务:https://www.npmjs.com/package/angular-actioncable .就 Core 而言,这只是基本的 Action Cable 设置。

问题:我在让握手跨两个不同的域工作时遇到了一些麻烦。我已经通读了我可以在网上找到的所有内容,不幸的是没有太多信息。如果您以前这样做过,请帮忙!

注意:我确实运行了 Redis 服务器,并且我正在使用单独的端口来模拟开发中的单独域。

核心:

chat_channel.rb

class ChatChannel < ApplicationCable::Channel
def subscribed
stream_from 'http://localhost:2000/#/chat'
end

def unsubscribed
stop_all_streams
end

def receive(data)
ActionCable.server.broadcast('http://localhost:2000/#/chat', data)
end

def speak
params.fetch('data').fetch('chat')
end
end

route.js
mount ActionCable.server => '/cable'  

电缆.yml
development:
adapter: redis
url: redis://localhost:6379

test:
adapter: async

production:
adapter: redis
url: redis://localhost:6379

配置/环境.rb
config.action_cable.disable_request_forgery_protection = true

前台:

ChatCtrl.js
app.controller('ChatCtrl', ['$scope', 'ActionCableChannel',
function($scope, ActionCableChannel) {

$scope.inputText;
$scope.chatData = [];

var consumer = new ActionCableChannel("ChatChannel");
var callback = function(message) {
$scope.chatData.push(message);
};

consumer.subscribe(callback).then(function() {
$scope.sendToMyChannel = function(message) {
consumer.send(message, 'speak');
};
$scope.$on("$destroy", function() {
consumer.unsubscribe().then(function() {
$scope.sendToMyChannel = undefined;
});
});
});

}
]);


// Action Cable Configuration
app.run(function (ActionCableConfig) {
ActionCableConfig.wsUri = 'localhost:4000';
});

控制台中的错误消息:

enter image description here

最佳答案

尝试

ActionCableConfig.wsUri = 'ws://localhost:4000';

关于ruby-on-rails - Action Cable 和 AngularJS 跨域集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39923514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com