首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >websocket-rails聊天室

websocket-rails聊天室
EN

Stack Overflow用户
提问于 2014-07-31 02:06:53
回答 1查看 450关注 0票数 3

我正在尝试创建一种Whatsapp,就像Rails中的消息应用服务器端一样,带有私人对话。现在,我正在尝试实现应用程序的实时部分-我正在使用websocket-rails -我不确定如何只向私有消息中的用户发送消息-我在websocket-rails中看到了一个称为私有通道的功能-但在阅读文档后,我得到的印象是每个私有通道都需要静态定义,我不能实时创建通道。你知道如何在websocket-rails中实现私人对话,比如指南或方向吗?或者其他我可以用来实现它的websocket服务?

EN

回答 1

Stack Overflow用户

发布于 2017-06-07 19:41:26

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

代码语言:javascript
复制
# app/channels/chat_channel.rb
class ChatChannel < ApplicationCable::Channel
  def subscribed
    stream_from "chat_#{params[:room]}"
  end
end

作为第一个参数传递给subscriptions.create的对象将成为有线电视频道中的参数散列。关键字channel是必填项:

代码语言:javascript
复制
# 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>
    """

在您的应用程序中的某个位置,这可能称为

代码语言:javascript
复制
ActionCable.server.broadcast(
  "chat_#{room}",
  sent_by: 'Paul',
  body: 'This is a cool chat app.'
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25043886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档