gpt4 book ai didi

ruby-on-rails - websocket-rails 聊天室

转载 作者:行者123 更新时间:2023-12-04 19:54:01 29 4
gpt4 key购买 nike

我正在尝试在 Rails 中创建类似 Whatsapp 的消息应用程序服务器端,并进行私有(private)对话。现在,我正在尝试实现应用程序的实时部分 - 我正在使用 websocket-rails - 我不确定如何仅向私有(private)消息中的用户发送消息 - 我在 websocket 中看到了一个称为私有(private) channel 的功能 - rails - 但在阅读文档后,我的印象是每个私有(private) channel 都需要静态定义,而且我无法实时创建 channel 。你知道我如何在 websocket-rails 中实现私有(private)对话,比如指南或方向吗?或者我可以用来实现它的任何其他 websocket 服务?

最佳答案

您可以在创建订阅时将参数从客户端传递到服务器端。例如:

# app/channels/chat_channel.rb
class ChatChannel < ApplicationCable::Channel
def subscribed
stream_from "chat_#{params[:room]}"
end
end

作为第一个参数传递给 subscriptions.create 的对象成为有线 channel 中的参数散列。关键字 channel 是必需的:

# app/assets/javascripts/cable/subscriptions/chat.coffee
App.cable.subscriptions.create { channel: "ChatChannel", room: "Best Room" },
received: (data) ->
@appendLine(data)

appendLine: (data) ->
html = @createLine(data)
$("[data-chat-room='Best Room']").append(html)

createLine: (data) ->
"""
<article class="chat-line">
<span class="speaker">#{data["sent_by"]}</span>
<span class="body">#{data["body"]}</span>
</article>
"""

在你的应用程序中的某个地方,这可能被称为

ActionCable.server.broadcast(
"chat_#{room}",
sent_by: 'Paul',
body: 'This is a cool chat app.'
)

关于ruby-on-rails - websocket-rails 聊天室,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25043886/

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