Aus*_*tin 7 ruby-on-rails heroku devise cloudflare actioncable
我在Heroku上使用ActionCable和Rails.
当我在example.herokuapp.com时,聊天工作完美,但它在我的自定义域(example.com)上中断,因为我没有从Web套接字的主机发出cookie(wss://example.heroku.com/cable ).
有没有办法在Heroku上指向wss://example.herokuapp.com/cable to wss://example.com/cable?
或者,您会解释如何使用cloudflare的websocket功能解决此问题吗?
非常感谢.
MZa*_*oza -1
当使用 websocket 工作时,我真的很喜欢使用Pusher。它们的设置非常简单。它们每天免费发送 20 万条消息
这是Pusher 的Heroku 文档
1)安装宝石
gem install pusher
Run Code Online (Sandbox Code Playgroud)
2)安装插件
heroku addons:create pusher:sandbox
Run Code Online (Sandbox Code Playgroud)
3)设置你的初始化器
#config/initializers/pusher.rb
require 'pusher'
Pusher.app_id = '000000'
Pusher.key = '000000000000000000'
Pusher.secret = '00000000000000000000'
Pusher.cluster = 'xxx'
Pusher.logger = Rails.logger
Pusher.encrypted = true
Run Code Online (Sandbox Code Playgroud)
一旦你有了密钥,你所需要的就是创建一个客户端(js)和一个服务器
客户端中的代码是这样的
<!DOCTYPE html>
<head>
<title>Pusher Test</title>
<script src="https://js.pusher.com/4.1/pusher.min.js"></script>
<script>
// Enable pusher logging - don't include this in production
Pusher.logToConsole = true;
var pusher = new Pusher("#{key}", {
cluster: "#{cluster}",
encrypted: true
});
var channel = pusher.subscribe('my-channel');
channel.bind('my-event', function(data) {
alert(data.message);
});
</script>
</head>
Run Code Online (Sandbox Code Playgroud)
现在在服务器上真的很简单
require 'pusher'
pusher_client = Pusher::Client.new(
app_id: ENV[:app_id],
key: ENV[:key],
secret: ENV[:secret],
cluster: ENV[:cluster],
encrypted: true
)
pusher_client.trigger('my-channel', 'my-event', {
message: 'hello world'
})
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |