Я чувствую себя по-настоящему глупо, но вот моя проблема.
Я использую Socket-Controller и routing-controller в одном приложении NodeTS. Поэтому мне нужно было создать два express сервера. Один слушает порт 3000 или что-то еще из env, а другой - порт 65080. Локально это работает отлично. Теперь в GAE мой HTTP-сервер для обычных запросов работает, в то время как мой SocketServer всегда отключается.
Если это поможет, вот мой app.yaml:
runtime: nodejs
env: flex
# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml
manual_scaling:
instances: 1
resources:
cpu: .5
memory_gb: 0.5
disk_size_gb: 10
network:
session_affinity: true
forwarded_ports:
- 65080
env_variables:
APP_NAME: Backend
APP_SCHEMA: https
APP_HOST: localhost
APP_PORT: 3000
APP_ROUTE_PREFIX: /api
APP_BANNER: true
TYPEORM_CONNECTION: postgres
TYPEORM_USERNAME: postgres
TYPEORM_DATABASE: db
TYPEORM_SYNCHRONIZE: true
TYPEORM_LOGGING: error
TYPEORM_LOGGER: advanced-console
И я создаю SocketServer с этим:
import {MicroframeworkLoader, MicroframeworkSettings} from 'microframework-w3tec';
import {createSocketServer} from 'socket-controllers';
import {env} from '../env';
export const socketLoader: MicroframeworkLoader = (settings: MicroframeworkSettings | undefined) => {
if (!settings) {
return;
}
const io = createSocketServer(65080, {
controllers: env.app.dirs.controllers,
middlewares: env.app.dirs.middlewares,
});
settings.setData('socket_io', io);
};
Кстати, я используя этот шаблон.
Помощь приветствуется, так как это расстраивает меня. :)
РЕДАКТИРОВАТЬ: Создание второго микросервиса на самом деле не вариант, так как они разделяют слишком много, чтобы быть изолированными друг от друга. (Сервисы, Модели БД, Настройки).
РЕДАКТИРОВАТЬ: Я настроил брандмауэр с этим:
--allow tcp:65080 \
--target-tags websocket \
--description "Allow websocket traffic on port 65080"