Php Laravel echo服务器不返回任何内容
我尝试使用带有socket.io的laravel echo服务器。Webserver是nginx,我想代理SSL。当我在浏览器中跟踪与开发者工具的通信时,连接似乎成功了,但只返回“OK” 这是我的配置: nginx: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
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。通过这种配置,我没有显示任何信息