gpt4 book ai didi

ruby-on-rails - 我正在尝试使用 Action 电缆在 rails 5 中的两个 friend 之间创建聊天,但是所有用户都可以查看该消息,无论是否是 friend

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:42 26 4
gpt4 key购买 nike

channel 内

javascripts/channel/message.js

App.message = App.cable.subscriptions.create('MessageChannel', {  
received: function(data) {

return $('#messages').append(this.renderMessage(data));
},
renderMessage: function(data) {
return "<p> <b>" + data.message + "</p>";
}
});

Routes

  post 'messages/chat_create/:friendship_id/:friend_id' =>'messages#chat_create' , as:"chat_create"

我的聊天 Controller

class MessagesController < ApplicationController

def chat_create

@chat = current_user.messages.new(msg: params[:message][:msg],friend_id:params[:friend_id])


if @chat.save
ActionCable.server.broadcast 'message_channel',message: @chat.msg
redirect_to chat_path(params[:friendship_id])
end
end

messages/chat.html.erb

<div id="messages">

<%=form_for :message, url: chat_create_path(params[:friendship_id],params[:friend_id]) , method: :post do |f|%>
<%=f.text_field :msg %>
<%=f.submit%>
<%end%>

</div>

How can I Improve this Please Provide me solutions

最佳答案

ActionCable IIUC 的 channel 、连接和​​订阅模型在一个连接上,可以广播多个 channel ,但用户只能看到订阅 channel 上发送的数据。

因此如果你想在两个 friend 之间创建聊天,它类似于创建一个私有(private) channel ,所以在你的 chat_create 方法中你可以试试这个

ActionCable.server.broadcast "message_channel_#{current_user.id}_#{params[:friend_id]}"

基本上你想在私有(private) channel 上广播。显然,要使此功能起作用,您必须将两个用户/ friend 都订阅到同一个私有(private) channel 。

关于ruby-on-rails - 我正在尝试使用 Action 电缆在 rails 5 中的两个 friend 之间创建聊天,但是所有用户都可以查看该消息,无论是否是 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38472018/

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