Настроить laravel-echo-сервер в другом домене (ошибка 400 рукопожатие) - PullRequest
0 голосов
/ 24 апреля 2018

Мне нужна помощь, я просто установил laravel-echo-сервер для своего приложения.

Мое приложение на https://my -domain.com .

Мой эхосигнал был на https://my -domain.com: 6001 , но я переместил его на https://redis.my -domain.com

Когда я пытаюсь перейти на https://redis.my -domain.com / socket.io / socket.io.js , я получаю правильный файл. (Это работает!)

Но мое приложение отправляет мне сообщение об ошибке при попытке использовать WebSocket ..


"подключение к веб-сокету 'WSS: //redis.my-domain.com/socket.io EIO = 3 & транспортное = WebSocket & ИСС = qsqs [......] Сбой: Ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 400"


Как я могу это исправить? Давайте посмотрим на laravel-echo-server.json:

{
	"authHost": "https://my-domain.com",
	"authEndpoint": "/broadcasting/auth",
	"clients": [
		{
			"appId": "***********",
			"key": "****************************"
		}
	],
	"database": "redis",
	"databaseConfig": {
		"redis": {},
		"sqlite": {
			"databasePath": "/database/laravel-echo-server.sqlite"
		}
	},
	"devMode": false,
	"host": null,
	"port": "6001",
	"protocol": "https",
	"socketio": {
		"transports": "websocket",
		"allowUpgrades": true
	},
	"sslCertPath": "/etc/letsencrypt/live/redis.my-domain.com/cert.pem",
	"sslKeyPath": "/etc/letsencrypt/live/redis.my-domain.com/privkey.pem",
	"sslCertChainPath": "",
	"sslPassphrase": "",
	"apiOriginAllow": {
		"allowCors": true,
		"allowOrigin": "https://my-domain.com",
		"allowMethods": "GET, POST",
		"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
	}
}

И мой файл JS

import Echo from 'laravel-echo';

let e = new Echo({
	broadcaster : 'socket.io',
	host: 'redis.my-domain.com',
});

var listen_channel = function(channel){
	e.channel(channel)
	.listen("BroadcastMessageEvent", function(e){
		var broadcast = '<div class="bradcast_box container-fluid"><div class="broadcast_message">'+ e.message +'</div></div>'
		$('body').append(broadcast);
	});
}

$(document).ready(function(){
	listen_channel('general'); 
});

window.listen_channel = listen_channel; 

Спасибо за помощь!

Я перепробовал все, что мог.

Хорошего дня


Конфиг: Apache 2.4

Laravel: 5,6

PHP: 7,2

NPM: 5,8,0

Узел: 8.11.1

...