복붙노트

[RUBY-ON-RAILS] API로 ActionCable를 사용하는 방법

RUBY-ON-RAILS

API로 ActionCable를 사용하는 방법

나는 사용자가 온라인하고 서로에게 메시지를 보낼 수 있도록 할 때 보여 레일 5 베타 1 ActionCable를 사용하여 매우 간단한 응용 프로그램을 만들었습니다.

지금, 나는, ActionCable의 클라이언트 측 참여 (레일 5에서 실행되지 않습니다) 다른 응용 프로그램의 맥락에서 그것을 구현하고 보낼 수있는 초기 응용 프로그램과 연결 및 온라인 등 같은 데이터를 (수신에 기본적 것 사용자 또는 메시지)의 상태를 표시합니다.

그 두 번째 응용 프로그램에서 데이터를 보내려면, 나는 단순히 AJAX POST 요청을 할 수 있습니다, 가정합니다. 질문 : 어떻게 내가 처음 응용 프로그램의 열려있는 연결에 내 두 번째 응용 프로그램에서 가입 할 수 있습니까?

심지어 : 어떻게 API를 통해 다른 응용 프로그램에서 내 레일 응용 프로그램의 ActionCable 연결에 가입합니까?

내 생각 엔 내가 본질적으로 내 두 번째 응용 프로그램에서 어떻게 든이 커피 스크립트를 포함 할, 수 있습니다 :

App.appearance = App.cable.subscriptions.create "AppearanceChannel",
  connected: ->
    # Called when the subscription is ready for use on the server

  disconnected: ->
    # Called when the subscription has been terminated by the server

  received: (data) ->
    # ...

해결법

  1. ==============================

    1.당신은 본질적으로 다른 응용 프로그램 (https://github.com/rails/rails/tree/master/actioncable/app/assets/javascripts)에 ActionCable JS 코드의 사본 또는 포트를 포함해야합니다.

    당신은 본질적으로 다른 응용 프로그램 (https://github.com/rails/rails/tree/master/actioncable/app/assets/javascripts)에 ActionCable JS 코드의 사본 또는 포트를 포함해야합니다.

    업데이트 : 최근 레일의 사용 외부 표준 JS 5의 ActionCable 커피 스크립트를 루비 온 레일즈의 직접적인 포트를 제공 actioncable-JS라는 NPM 패키지를 출시 : https://github.com/mwalsher/actioncable-js

    당신은 또한 원시 WebSocket을 사용할 수 있도록 ActionCable는 HTML5 WebSocket을 위에 불과 층이기 때문에 JS 코드 (또는 제 3 자 라이브러리) 메시징을 처리합니다.

    ActionCable 메시지 프로토콜은 다소 여기에 설명되어 있습니다 : https://github.com/NullVoxPopuli/action_cable_client#the-action-cable-protocol. 나는 편의를 위해 아래에 붙여 넣을 수 있습니다 :

    따라서, 예를 들어 (루비)

    payload = {
      command: 'command text',
      identifier: { channel: 'MeshRelayChannel' }.to_json,
      data: { to: 'user', message: 'hi', action: 'chat' }.to_json
    }.to_json
    
  2. ==============================

    2.mwalsher의 솔루션은 나에게 매우 도움 동안, 나는 최근에 내 질문에 대한 공식 용액으로 레일 저장소에 끌어 오기 요청을 발견했다.

    mwalsher의 솔루션은 나에게 매우 도움 동안, 나는 최근에 내 질문에 대한 공식 용액으로 레일 저장소에 끌어 오기 요청을 발견했다.

    https://github.com/rails/rails/pull/24991

    나는 가까운 장래에이 주요 문서에 추가됩니다 가정합니다. 여기에 공식 actioncable NPM 패키지에 대한 링크는 다음과 같습니다 https://www.npmjs.com/package/actioncable

    당신은 어떤 JS 앱 mwalsher의 솔루션은 비슷한 사용할 수 있습니다. 그냥 NPM 패키지를 설치 :

    npm install actioncable --save
    

    문서로부터 JS 예를 여기서는

    ActionCable = require('actioncable')
    
    var cable = ActionCable.createConsumer('wss://RAILS-API-PATH.com/cable')
    
    cable.subscriptions.create('AppearanceChannel', {
      // normal channel code goes here...
    });
    

    편집 : 풀 요청이 이제 잠시 동안 합병 설명은 공식 추가 정보의 일부입니다되었습니다 - 레일 가이드 단지 아직.

  3. from https://stackoverflow.com/questions/35320791/how-to-use-actioncable-as-api by cc-by-sa and MIT license