【问题标题】:Error connecting to socket channels when running a echo server through a subdomain通过子域运行回显服务器时连接到套接字通道时出错
【发布时间】:2020-02-17 15:34:22
【问题描述】:

很多公司或工作场所都有安全协议,只有公共端口是开放的,例如。 80 (HTTP)、443 (HTTPS)。如果我们让我们的 Web 应用尝试连接到端口 6001(默认情况下为 laravel-echo-server),那么您的某些用户肯定会在端口关闭时遇到问题...Source

在 nginx 中创建子域后,我通过它启动了套接字并且它工作了,除了现在我无法连接到任何通道。 Client can not be authenticated, got HTTP status 419"message": "CSRF 令牌不匹配。",

实验禁用csrf保护,错误改成Client can not be authenticated, got HTTP status 403"message": "",

app.js

/**
 * Port configured on proxy server (default: 6001).
 * The default port for HTTPS protocol is 443.
 *
 * @type {string}
 */
const ECHO_DOMAIN = process.env.NODE_ENV === 'production'
    ? 'ws.site.com'
    : 'wsdev.site.com';

window.io = require('socket.io-client');

if (typeof io !== 'undefined') {
    window.Echo = new Echo({
        broadcaster: 'socket.io',
        host: `https://${ECHO_DOMAIN}`,
        reconnectionAttempts: 120
    });
...

连接成功

如何解决?

【问题讨论】:

    标签: laravel nginx websocket laravel-echo broadcasting


    【解决方案1】:

    通过在 .env 中添加变量 SESSION_DOMAIN=.site.com 解决了问题,该变量会更改 'domain' 中的值>config/session.php

    然后你需要清除浏览器中的cookies,以及服务器上的缓存。 您可能还需要执行 composer dump-autoload Primary source

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 2016-04-07
      • 1970-01-01
      • 2012-09-06
      • 2014-03-01
      • 2017-07-23
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多