私はWebSocketに接続するためにRedisとNode.JSを使用しているPHP Laravelアプリケーションを開発しています。HerokuのWebSocketに接続できません
私はポート3000でノードサーバーを稼動しようとしていますが、herokuは動的にポートを割り当てています。
このため、クライアント側で正しいポート番号を取得できません。
私はそれを修正するために何をすべきですか?
クライアント側の設定:下図のように
var socket = io.connect('http://app-around.herokuapp.com:3000');
Note: Host Name is app-around.herokuapp.com
バックエンドがファインを実行している:
C:\xampp\htdocs\around-us>heroku run node socket.jsRunning node
socket.js on app-around... up, run.5567 (Free)
// Randomly generated port number it is..
Message Recieved: {"event":"App\\Events\\NewMessage","data":{"data":
{"message":"Question Posted"}},"socket":null}
ので、イベントがサーバー側で生成されますが、クライアント側でそれらを受けることができないです得ています。フロントエンドにいくつかのことを試してみましたが、それらのどれもが作業していない:
Eg: 1) var socket = io.connect();
2) var socket = io.connect(window.location.hostname);
ノードServerコード:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var Redis = require('ioredis');
var redis = require('redis').createClient(process.env.REDIS_URL);
redis.subscribe('test-channel', function(err, count) {
});
redis.on('message', function(channel, message) {
console.log('Message Recieved: ' + message);
message = JSON.parse(message);
io.emit(channel + ':' + message.event, message.data);
var temp = "data";
io.emit("time", temp);
});
var port = process.env.PORT || 3000;
http.listen(port, function(){
console.log('Listening on Port 23000');
});
JSコードをフロントエンド側の角度のアプリのために:
var socket = io();
socket.on("time",function(data){
alert(data);
});
リモートでHerokuに接続するときにポート番号をドロップする - ネットワークルーティングレイヤーは、HTTP(ポート80)とHTTPS(ポート443)を動的に割り当てられたポートに転送するように注意します。 – Myst