Я пытаюсь использовать соединение socket.io с хостингом / функциями firebase, но сталкиваюсь с несколькими проблемами. Это началось как проблема с CORS (которая, я уверен, все еще остается проблемой), но теперь я просто совершенно заблудился в том, что не так, ниже моя база данных. json, index. js (файл функции firebase), и даже клиентский файл angular, который инициализирует соединение с сервером.
firebase. json
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"headers": [
{
"source" : "**",
"headers" : [ {
"key" : "Access-Control-Allow-Headers",
"value" : "Origin"
} ]
},
{
"source" : "**",
"headers" : [ {
"key" : "Access-Control-Allow-Origin",
"value" : "http://localhost:4200"
} ]
}
],
"rewrites": [
{
"source": "**",
"function": "app"
}
]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
],
"source": "functions"
}
}
index. js
const functions = require('firebase-functions');
const express = require('express');
var app = express();
const http = require('http').Server(express);
const socketio = require('socket.io')(http);
const cors = require('cors');
app.use(cors({credentials: true, origin: '*:*'}));
app.get('/tester', (request, response) => {
//response.header('Access-Control-Allow-Origin', '*');
response.send('Hello!');
socketio.on('connection', socket => {
connections.push(socket);
console.log('New client connected ('+connections.length+' connections).');
//console.log(socket);
socket.emit('port', 'LIVE SHIT');
});
})
exports.app = functions.https.onRequest(app)
app.component.ts (клиентский компонент для подключения)
import { Component } from '@angular/core';
import io from 'socket.io-client';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'multi-client';
port: number = 0;
socket: any;
width: number = 100;
updateVal: number = 5;
constructor()
{
this.socket = io('http://localhost:5000/tester');
this.socket.on('port', port => {
this.port = port;
})
}
updateWidth(val)
{
this.width += val;
}
}
Это ошибка, которую я получаю.
Я просмотрел несколько постов по stackoverflow и различным другим сайтам, у которых были похожие проблемы, но, похоже, ничего не получалось. Я уверен, что я делаю это неправильно, но я теряюсь из-за того, что мне не хватает для выполнения sh этого. Пожалуйста, помогите!