Php Laravel echo服务器不返回任何内容

Php Laravel echo服务器不返回任何内容,php,laravel,nginx,websocket,socket.io,Php,Laravel,Nginx,Websocket,Socket.io,我尝试使用带有socket.io的laravel echo服务器。Webserver是nginx,我想代理SSL。当我在浏览器中跟踪与开发者工具的通信时,连接似乎成功了,但只返回“OK” 这是我的配置: nginx: location / { try_files $uri /index.php?$query_string; } location /socket.io { proxy_pass http://localhost:6001/; proxy_http_vers

我尝试使用带有socket.io的laravel echo服务器。Webserver是nginx,我想代理SSL。当我在浏览器中跟踪与开发者工具的通信时,连接似乎成功了,但只返回“OK”

这是我的配置:

nginx:

location / {
    try_files $uri /index.php?$query_string;
}

location /socket.io {
    proxy_pass http://localhost:6001/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

# Remove trailing slash to please routing system.
if (!-d $request_filename) {
    rewrite     ^/(.+)/$ /$1 permanent;
}
laravel-echo-server.json

{
   "authHost":"http://localhost",
   "authEndpoint":"/api/v1/broadcasting/auth",
   "clients":[
      {
         "appId":"...",
         "key":"..."
      }
   ],
   "database":"redis",
   "databaseConfig":{
      "redis":{
         "port":"6379",
         "host":"localhost"
      },
      "sqlite":{
         "databasePath":"/database/laravel-echo-server.sqlite"
      }
   },
   "devMode":true,
   "host":null,
   "port":"6001",
   "protocol":"http",
   "socketio":{

   },
   "sslCertPath":"",
   "sslKeyPath":"",
   "sslCertChainPath":"",
   "sslPassphrase":"",
   "apiOriginAllow":{
      "allowCors":false,
      "allowOrigin":"",
      "allowMethods":"",
      "allowHeaders":""
   }
}
js文件

import Vue from "vue";
import Echo from "laravel-echo";
import axios from "axios";
import VueAxios from "vue-axios";
import store from "@/store";
import logout from "@/js/logout";
import { transactionBeep, messageBeep } from "@/js/beep";
import { bus } from "@/bus";

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

export const echo = new Echo({
  broadcaster: "socket.io",
  host: window.location.hostname
});

export const http = axios.create();

Vue.use(VueAxios, http);

http.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    if (
      error.response &&
      (error.response.status === 401 || error.response.status === 419)
    ) {
      window.location = "/login?authExpired";
    } else {
      if (Vue.notify && error.response.data !== null) {
        if (typeof error.response.data !== "object") {
          Vue.notify({
            group: "errors",
            title: error.response.data,
            type: "error"
          });
        } else if (error.response.data.errors && error.response.data.message) {
          let errorMessages = error.response.data.errors;
          let text = "";
          for (let key in errorMessages) {
            errorMessages[key].forEach(errorText => {
              text += errorText + "<br>";
            });
          }

          Vue.notify({
            group: "errors",
            title: error.response.data.message,
            text: text,
            type: "error"
          });
        } else if (error.response.status) {
          Vue.notify({
            group: "errors",
            title: `Ein Fehler ist aufgetreten. Code: ${error.response.status}`,
            type: "error"
          });
        }
      }
    }

    return Promise.reject(error);
  }
);

export function setCSRFToken(token) {
  // http.defaults.headers.common["X-CSRF-TOKEN"] = token;
  echo.connector.options.auth.headers["X-CSRF-TOKEN"] = token;
}

export function CSRFToken() {
  return document.querySelector('meta[name="csrf-token"][content]').content;
}

setCSRFToken(CSRFToken());

export function joinPrivateChannels() {
  const customerProfileId =
    store.getters["user/me"].customer_profile &&
    store.getters["user/me"].customer_profile[0].id;
  const roles = store.getters["user/me"].roles.map(role => role.name);

  if (roles.includes("customer")) {
    echo
      .private(`message.0.${customerProfileId}`)
      .listen("MessageWasCreated", event => {
        store.commit("message/update", [event]);
        let dialogPartner = event.sender;
        dialogPartner.last_message = event;
        store.commit("dialog/update", [dialogPartner]);
        if (store.getters["user/me"].settings.newMessageSound) {
          messageBeep();
        }
      });

    echo
      .private(`customerProfile.${customerProfileId}`)
      .listen("TransactionWasCreated", transaction => {
        if (transaction.state !== 0) {
          return;
        }

        store.commit("balance/newTransaction", transaction);
        if (
          store.getters["user/me"].settings.flirtDollarSound &&
          transaction.amount > 0
        ) {
          transactionBeep();
        }
      });
  }

  echo
    .private(`user.${store.getters["user/me"].id}`)
    .listen("UserForceLogout", () => {
      logout("/login");
    });

  echo
    .join("online")
    .here(online => {
      store.commit("online/removeLeaver", online.id);
      store.commit("online/update", online);
    })
    .joining(online => {
      store.commit("online/removeLeaver", online.id);
      store.commit("online/update", online);
    })
    .leaving(({ id }) => {
      store.commit("online/addLeaver", id);
      setTimeout(() => {
        if (store.getters["online/leavers"].some(leaver => leaver === id)) {
          store.commit("online/delete", id);
        }
      }, 5000);
    });

  if (roles.includes("moderator")) {
    const modChannel = echo
      .join("moderator")
      .here(moderator => {
        store.commit("moderatorOnline/update", moderator);
      })
      .joining(moderator => {
        store.commit("moderatorOnline/update", moderator);
      })
      .leaving(moderator => {
        store.commit("moderatorOnline/delete", moderator);
      })
      .listenForWhisper("fresh-session", e => {
        if (e.id === store.getters["user/me"].id) {
          logout("/logout-wegen-mehreren-sessions");
        }
      })
      .listen("LogoutFromModeratorChat", data => {
        if (data.id === store.getters["user/me"].id) {
          http.post("/api/v1/moderation/end");
          logout("/logout-wegen-admin");
        }
      });

    setTimeout(() => {
      modChannel.whisper("fresh-session", {
        id: store.getters["user/me"].id
      });
    }, 500);
  }

  if (roles.includes("admin")) {
    echo
      .private("admin")
      .listen("ModeratorMessageOutEvent", data => {
        bus.$emit("waiting-dialogs-update", data);
      })
      .listen("NewAdminTask", adminTask => {
        store.commit("adminBadges/newAdminTask", adminTask);
      });
  }
}
从“Vue”导入Vue;
从“laravel Echo”导入Echo;
从“axios”导入axios;
从“vue axios”导入VueAxios;
从“@/store”导入存储;
从“@/js/logout”导入注销;
从“@/js/beep”导入{transactionBeep,messageBeep}”;
从“@/bus”导入{bus};
window.io=require(“socket.io客户端”);
导出常量回显=新回显({
广播员:“socket.io”,
主机:window.location.hostname
});
export const http=axios.create();
Vue.use(VueAxios,http);
http.interceptors.response.use(
响应=>{
返回响应;
},
错误=>{
如果(
错误.响应&&
(error.response.status==401 | | error.response.status==419)
) {
window.location=“/login?authExpired”;
}否则{
if(Vue.notify&&error.response.data!==null){
if(typeof error.response.data!=“对象”){
Vue.notify({
组:“错误”,
标题:error.response.data,
类型:“错误”
});
}else if(error.response.data.errors&&error.response.data.message){
让errorMessages=error.response.data.errors;
让文本=”;
for(让我们输入错误消息){
errorMessages[key].forEach(errorText=>{
text+=errorText+“
”; }); } Vue.notify({ 组:“错误”, 标题:error.response.data.message, 文本:文本, 类型:“错误” }); }else if(error.response.status){ Vue.notify({ 组:“错误”, 标题:`Ein Fehler ist aufgetreten.Code:${error.response.status}`, 类型:“错误” }); } } } 返回承诺。拒绝(错误); } ); 导出函数setCSRFToken(token){ //http.defaults.headers.common[“X-CSRF-TOKEN”]=TOKEN; echo.connector.options.auth.headers[“X-CSRF-TOKEN”]=TOKEN; } 导出函数CSRFToken(){ return document.querySelector('meta[name=“csrf token”][content]')。content; } setCSRFToken(CSRFToken()); 导出函数joinPrivateChannels(){ const customerProfileId= store.getters[“用户/我”].customer\u配置文件&& store.getters[“user/me”].customer\u profile[0].id; const roles=store.getters[“user/me”].roles.map(role=>role.name); if(角色包括(“客户”)){ 回声 .private(`message.0.${customerProfileId}`) .listen(“MessageWasCreated”,事件=>{ 提交(“消息/更新”,“事件”); 让dialogPartner=event.sender; dialogPartner.last_message=事件; 提交(“对话/更新”,[dialogPartner]); if(store.getters[“user/me”].settings.newMessageSound){ messageBeep(); } }); 回声 .private(`customerProfile.${customerProfileId}`) .listen(“TransactionWasCreated”,事务=>{ if(transaction.state!==0){ 返回; } 提交(“余额/新交易”,事务); 如果( store.getters[“用户/我”].settings.dollarSound&& 交易记录金额>0 ) { transactionBeep(); } }); } 回声 .private(`user.${store.getters[“user/me”].id}`) .listen(“UserForceLogout”,()=>{ 注销(“/login”); }); 回声 .加入(“在线”) .here(在线=>{ 提交(“online/removeLeaver”,online.id); 提交(“在线/更新”,在线); }) .加入(在线=>{ 提交(“online/removeLeaver”,online.id); 提交(“在线/更新”,在线); }) .离开({id})=>{ 提交(“在线/addLeaver”,id); 设置超时(()=>{ if(store.getters[“online/leavers”].some(leaver=>leaver==id)){ store.commit(“在线/删除”,id); } }, 5000); }); if(角色包括(“主持人”)){ const modChannel=echo .加入(“主持人”) .此处(主持人=>{ 提交(“版主在线/更新”,版主); }) .加入(主持人=>{ 提交(“版主在线/更新”,版主); }) .离开(主持人=>{ 提交(“版主在线/删除”,版主); }) .listenforwhister(“新会话”,e=>{ if(e.id==store.getters[“user/me”].id){ 注销(“注销wegen mehreren会话”); } }) .listen(“从主持人处注销”,数据=>{ if(data.id==store.getters[“user/me”].id){ http.post(“/api/v1/moderation/end”); 注销(“/logout wegen admin”); } }); 设置超时(()=>{ modChannel.whisper(“刷新会话”{ id:store.getters[“user/me”].id }); }, 500); } if(角色包括(“管理员”)){ 回声 .private(“管理员”) .listen(“主持人消息输出事件”,数据=>{ 总线$emit(“等待对话框更新”,数据); }) .listen(“NewAdminTask”,adminTask=>{ 提交(“adminBadges/newAdminTask”,adminTask); }); } }

这是服务,我没有得到日志或其他信息显示

尤其是当我从
proxy\u pass更改nginx配置的一行时http://localhost:6001/;
代理\u通行证http://localhost:6001/socket.io/
我得到了像
96:0{“sid”:“tz22xzfxktvjbbdbaab”,“upgrades”:[“websocket”],“pingInterval”:25000,“pingTimeout”:5000}2:40
1:1
,但这通常是
{“code”:1,“message”:“Session ID unknown”
(http代码400)。有时我会返回http代码500。通过这种配置,我没有显示任何信息