Rails의 Action Cable을 사용하여 실시간 채팅 기능을 시도했습니다.
하지만 액션 케이블의 전모를 잡지 못하고 이해범위 내 기술이다.
만약 잘못된 일을 썼다면 평론란에 지적해 주십시오. 그러면 큰 도움이 될 것입니다.
목적
HTTP 통신에서 고객은 호스트에 요청을 요청할 수 있고 처음으로 데이터를 얻을 수 있다.
그러나 여러 클라이언트가 호스트에 액세스하는 경우 호스트에 요청하지 않으면 데이터를 가져올 수 없습니다.따라서 호스트와 클라이언트가 서로 감시하고 데이터 변화에 즉각 응답하는 웹 페이지를 만든다.
실천
우선 사전 준비로 Rails 프로젝트를 생성합니다.
이어서 다음 명령으로 채널을 생성합니다.이름은 센드채널.밀리그램
rails g channel send_msg
다음은 Action Cable 입니다.mount 서버를 위한 기술입니다.routes.rb
mount ActionCable.server => "/cable"
chat_channel.rb는 고객측의 데이터를 호스트에 전달하는 데 사용되는 기술이다.★너무 두루뭉술한 표현
subscribed 방법에서 호스트로 흐르는 값으로 'room' 을 결정합니다.send밀리초 메서드의 Action Cableserver.브래드캐스트 뒤에도 공통된 값을 기술했다.
이것은 클라이언트와 호스트 간의 통신에 대해 미리 연결 실례를 생성한 것이다.이것은subscribed(구독으로 번역되지만 예약이라는 뜻입니까?)서버에 전달합니다.그 구체적인 내용은 메시지:데이터['메시지'입니다!진솔하게 읽었다.
* 임의로 설명한 것이니 주의하십시오.
chat_channel.rb
class ChatChannel < ApplicationCable::Channel
def subscribed
stream_from "room"
end
def unsubscribed
# Any cleanup needed when channel is unsubscribed
end
def send_msg(data)
ActionCable.server.broadcast "room", message:data['message']
end
end
다음은 채팅.coffee 파일 정보.아까 채팅.channel.rb의 sendmsg 방법의 처리에서 서버에 전달되는 메시지: 데이터 ['메시지 'msg: (data)에 기술되어 있습니다.
chat.coffee
App.chat = App.cable.subscriptions.create "ChatChannel",
connected: ->
console.log("WEBSOCKET CLIANT CONNECTED")
disconnected: ->
# Called when the subscription has been terminated by the server
received: (data) ->
console.log(data['message'])
send_msg:(data) ->
@perform 'send_msg', message:data
chat.커피에 앱.cable 등급의 예약을 제작하는 것이 바로 앱입니다.chat에 저장합니다.이 앱.채팅이라는 실례로 index.html.eb에서 데이터를 보낼 수 있습니다.
index.html
<h1>チャットルーム</h1><br>
<p id="chat"></p><br>
<p>メッセージ:</p>
<br>
<textarea id="msg" style="width:300px; height:80px;"></textarea>
<hr>
<button id="send">送信</button>
<script>
$(document).ready(function(){
/* メッセージ受信 */
App.chat.received = function(data){
$("#chat").append(data['message'] + "<br>")
}
$("#send").click(function(){
msg = $("#msg").val()
/* メッセージ送信 */
App.chat.send_msg(msg)
})
})
</script>
두 브라우저를 시작하여 작업을 확인했습니다.총결산
레일스의 기능과 기초 기술에 대한 몰이해가 드러나는 경우가 많은데 잘 모르겠지만 움직이는 것 같아요.호스트와 고객 간의 실시간 통신 기능에 대해서는 다시 직면할 필요가 있다.그게 다야.
참고 자료
Action Cable의 개요: https://railsguides.jp/action_cable_overview.html
Rails WebSocket Chat Real Time : https://www.youtube.com/watch?v=kJbuZecN1c8
Reference
이 문제에 관하여(Rails의 Action Cable을 사용하여 실시간 채팅 기능을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Bikeiken-IT/items/47649932b7d8a2e5838d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)