質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

2回答

2733閲覧

websocketを実装。送信・受信・表示のどれに問題があるのか。

s.k

総合スコア423

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

1クリップ

投稿2016/10/27 02:12

編集2016/10/29 06:04

###前提・実現したいこと
websocketを使って、チャット機能を作りたいです。
そのために、まずはwebsocketを実装・入力内容の受信・送信・表示をしたいです。

###発生している問題・エラーメッセージ

websocket-railsをインストールし、一通りチュートリアルに合わせてjsコードを書きました。
きちんと実装できていれば入力フォームに入力したコメントがフォーム上部に表示されます。

しかし、私が作ったものは表示されません…
いくつもの記事を参考にいろいろ試しましたが、入力フォームのデータが表示されないところで全てとまります。

【理想】

【現状】

(sendボタンを押す前)

(sendボタンを押した後)

変わらない…

原因は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

ご教示お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

もしActionCableではなく、websocket-railsで実装したいということであればになりますが、

redisサーバー

はインストールされましたでしょうか。

私も同じようなサイトを見て実装しましたが、redisサーバーをインストールしていなかったので、同じ現象に合いました。

そして今現在は、redisサーバーの違う問題に出くわしております。
とはいえ、ActionCableも別に楽なわけではないので、どちらの方が求める機能を有しているかで選んだ方がいいと思います。

投稿2017/08/07 08:21

siruku6

総合スコア1382

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

別のスレッドで返信した方ですね。
websocket-railsは癖がありますから、できることならRailsを5にアップデートして、ActionCableで実装し直したほうがいいです。

投稿2016/10/31 13:15

rox

総合スコア179

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s.k

2016/10/31 13:24

roxさん ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問