疑問点
Docker上に構築したRailsアプリケーションを用いて、ActionCableを用いたリアルタイムチャットを作成しています。
Console
でエラー検出され、作成したroom_channel.jsのconnectedメソッドに処理が来ません。
ブラウザの検証機能を用いてConsoleを開くと、action_cable.js
のthis.webSocket = new adapters.WebSocket(this.consumer.url, protocols);
の部分で以下のエラーが検出されました。
参考文献にDevelopmentモードでは、http://localhost:3000 のみ許可。
という記載があるのですが、いまいち根拠がわかっていません。
やはりDockerコンテナのポート番号が3000ではないことが原因なのでしょうか。
Console
1WebSocket connection to 'ws://localhost:81/cable' failed: Error during WebSocket handshake: Unexpected response code: 404
action_cable.js
javascript
1(一部抜粋) 2Connection.prototype.open = function open() { 3 if (this.isActive()) { 4 logger.log("Attempted to open WebSocket, but existing socket is " + this.getState()); 5 return false; 6 } else { 7 logger.log("Opening WebSocket, current state is " + this.getState() + ", subprotocols: " + protocols); 8 if (this.webSocket) { 9 this.uninstallEventHandlers(); 10 } 11 this.webSocket = new adapters.WebSocket(this.consumer.url, protocols); 12 this.installEventHandlers(); 13 this.monitor.start(); 14 return true; 15 } 16};
room_channel.js
import consumer from "./consumer" consumer.subscriptions.create("RoomChannel", { connected() { console.log('I am Jack') }, disconnected() { }, received(data) { }, speak: function(message) { return this.perform('speak'); } });
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。