###前提・実現したいこと
websocketを使って、チャット機能を作りたいです。
そのために、まずはwebsocketを実装・入力内容の受信・送信・表示をしたいです。
###発生している問題・エラーメッセージ
websocket-railsをインストールし、一通りチュートリアルに合わせてjsコードを書きました。
きちんと実装できていれば入力フォームに入力したコメントがフォーム上部に表示されます。
しかし、私が作ったものは表示されません…
いくつもの記事を参考にいろいろ試しましたが、入力フォームのデータが表示されないところで全てとまります。
【現状】
変わらない…
原因はjsか何かしらのrailsの環境?にあるのではないかと思います。
4,5個のチュートリアルを試してすべて同じエラーですので、おそらくコードミスではない気がしています。
以下、関連するコードを書きます。
コントローラーはhomeとwebsocket_chatの2つ作ってあります。
【Gemfile】
gem 'rails', '4.2.6' gem 'sqlite3' gem 'sass-rails', '~> 5.0' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.1.0' gem 'websocket-rails' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', '~> 2.0' gem 'sdoc', '~> 0.4.0', group: :doc 以下略 ・ ・ ・
【config/development】
・・・略・・・ config.middleware.delete Rack::Lock end
【application.js】
・・・略・・・ //= require websocket_rails/main ・・・略・・・
【home/index.html.erb】
<!-- チャット表示部分 --> <ul id="chat_area"> </ul> <!-- コメントフォーム --> <input id="comment" type="text"> <input id="send" type="button" value="send"> <script> var ws_rails = new WebSocketRails("localhost:3000/websocket"); #WebSocketRailsオブジェクトを生成し、WebSocket接続を行う。 // メッセージ受信時の処理 ws_rails.bind("websocket_chat", function(message){ var message_li = document.createElement("li"); message_li.textContent = message; document.getElementById("chat_area").appendChild(message_li); }) // メッセージ送信時の処理 document.getElementById("send").onclick = function(){ var comment = document.getElementById("comment").value; ws_rails.trigger("websocket_chat", comment); } </script>
【events.rb】
WebsocketRails::EventMap.describe do subscribe :websocket_chat, to: WebsocketChatController, with_method: :message_recieve end
【websocket_chat_controller.rb】
class WebsocketChatController < WebsocketRails::BaseController def message_recieve # クライアントからのメッセージを取得 recieve_message = message() # websocket_chat broadcast_message(:websocket_chat, recieve_message) end end
【sendボタンを押したときのコンソール表示】
Started GET "/" for ::1 at 2016-10-27 10:49:19 +0900 Processing by HomeController#index as HTML Rendered home/index.html.erb within layouts/application (0.0ms) Completed 200 OK in 79ms (Views: 78.1ms | ActiveRecord: 0.0ms) Started GET "/websocket" for ::1 at 2016-10-27 10:49:24 +0900
【sendボタンを押したときのlocalhost3000/websocketの表示】
[["client_connected",{"id":null,"channel":null,"user_id":null,"data":{"connection_id":"600cdff10e31a7ab8a97"},"success":null,"result":null,"token":null,"server_token":null}]][["websocket_rails.ping",{"id":null,"channel":null,"user_id":null,"data":{},"success":null,"result":null,"token":null,"server_token":null}]]
###試したこと
この記事を参考に書きました。
railsのwebsocket-railsについて解説する
###補足情報(言語/FW/ツール等のバージョンなど)
rails 4.2.6
ご教示お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。