Adding a Pusher container as a middleware/dispatcher between front and back

This commit is contained in:
David Négrier 2020-11-13 18:00:22 +01:00
parent 6c6d046891
commit 4c1e566a6c
86 changed files with 12172 additions and 983 deletions

View file

@ -2,45 +2,45 @@
"name": "workadventure-messages",
"version": "1.0.0",
"description": "",
"main": "generated/src/proto/messages_pb.js",
"scripts": {
"proto": "protoc --plugin=\"protoc-gen-ts=./node_modules/.bin/protoc-gen-ts\" --js_out=\"import_style=commonjs,binary:generated\" --ts_out=\"generated\" messages.proto",
"proto": "grpc_tools_node_protoc --plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts --grpc_out=generated --js_out=\"import_style=commonjs,binary:generated\" --ts_out=generated -I ./protos protos/*.proto",
"copy-to-back": "rm -rf ../back/src/Messages/generated && cp -rf generated/ ../back/src/Messages/generated",
"copy-to-front": "rm -rf ../front/src/Messages/generated && cp -rf generated/ ../front/src/Messages/generated",
"proto-all": "yarn run proto && yarn run copy-to-back && yarn run copy-to-front",
"proto:watch": "yarn run proto-all; inotifywait -q -m -e close_write messages.proto | while read -r filename event; do yarn run proto-all; done"
"copy-to-pusher": "rm -rf ../pusher/src/Messages/generated && cp -rf generated/ ../pusher/src/Messages/generated",
"proto-all": "yarn run proto && yarn run copy-to-back && yarn run copy-to-front && yarn run copy-to-pusher",
"proto:watch": "yarn run proto-all; inotifywait -q -m -e close_write protos/messages.proto | while read -r filename event; do yarn run proto-all; done"
},
"dependencies": {
"google-protobuf": "^3.13.0",
"grpc": "^1.24.4"
},
"devDependencies": {
"@types/google-protobuf": "^3.7.4",
"@types/node": "^14.14.7",
"@typescript-eslint/eslint-plugin": "^4.7.0",
"@typescript-eslint/parser": "^4.7.0",
"dtslint": "^4.0.5",
"eslint": "^7.13.0",
"eslint-config-airbnb-typescript": "^12.0.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-sonarjs": "^0.5.0",
"grpc-tools": "^1.9.1",
"grpc_tools_node_protoc_ts": "^5.0.1",
"protobufjs": "^6.10.1",
"rimraf": "^3.0.2",
"shelljs": "^0.8.4",
"typescript": "^4.0.5"
},
"repository": {
"type": "git",
"url": "git+https://github.com/thecodingmachine/workadventure.git"
"url": "https://github.com/CatsMiaow/node-grpc-typescript.git"
},
"contributors": [
{
"name": "Grégoire Parant",
"email": "g.parant@thecodingmachine.com"
},
{
"name": "David Négrier",
"email": "d.negrier@thecodingmachine.com"
},
{
"name": "Arthmaël Poly",
"email": "a.poly@thecodingmachine.com"
}
"keywords": [
"Node.js",
"gRPC",
"TypeScript"
],
"license": "SEE LICENSE IN LICENSE.txt",
"bugs": {
"url": "https://github.com/thecodingmachine/workadventure/issues"
},
"homepage": "https://github.com/thecodingmachine/workadventure#readme",
"dependencies": {
"google-protobuf": "^3.13.0",
"typescript": "^3.8.3"
},
"devDependencies": {
"ts-node-dev": "^1.0.0-pre.44",
"@types/google-protobuf": "^3.7.3",
"concurrently": "^5.3.0",
"ts-protoc-gen": "^0.13.0"
}
"homepage": "https://github.com/CatsMiaow/node-grpc-typescript#readme",
"author": "CatsMiaow",
"license": "MIT"
}

View file

@ -157,8 +157,8 @@ message ItemStateMessage {
}
message RoomJoinedMessage {
repeated UserJoinedMessage user = 1;
repeated GroupUpdateMessage group = 2;
//repeated UserJoinedMessage user = 1;
//repeated GroupUpdateMessage group = 2;
repeated ItemStateMessage item = 3;
int32 currentUserId = 4;
repeated string tag = 5;
@ -209,3 +209,89 @@ message ServerToClientMessage {
SendUserMessage sendUserMessage = 12;
}
}
/************************** SERVICES **************************/
message JoinRoomMessage {
PositionMessage positionMessage = 1;
string name = 2;
repeated CharacterLayerMessage characterLayer = 3;
string userUuid = 4;
string roomId = 5;
repeated string tag = 6;
}
message UserJoinedZoneMessage {
int32 userId = 1;
string name = 2;
repeated CharacterLayerMessage characterLayers = 3;
PositionMessage position = 4;
Zone fromZone = 5;
}
message UserLeftZoneMessage {
int32 userId = 1;
Zone toZone = 2;
}
message GroupUpdateZoneMessage {
int32 groupId = 1;
PointMessage position = 2;
int32 groupSize = 3;
Zone fromZone = 4;
}
message GroupLeftZoneMessage {
int32 groupId = 1;
Zone toZone = 2;
}
message Zone {
int32 x = 1;
int32 y = 2;
}
message ZoneMessage {
string roomId = 1;
int32 x = 2;
int32 y = 3;
}
message PusherToBackMessage {
oneof message {
JoinRoomMessage joinRoomMessage = 1;
UserMovesMessage userMovesMessage = 2;
SilentMessage silentMessage = 3;
ViewportMessage viewportMessage = 4;
ItemEventMessage itemEventMessage = 5;
SetPlayerDetailsMessage setPlayerDetailsMessage = 6;
WebRtcSignalToServerMessage webRtcSignalToServerMessage = 7;
WebRtcSignalToServerMessage webRtcScreenSharingSignalToServerMessage = 8;
PlayGlobalMessage playGlobalMessage = 9;
StopGlobalMessage stopGlobalMessage = 10;
ReportPlayerMessage reportPlayerMessage = 11;
QueryJitsiJwtMessage queryJitsiJwtMessage = 12;
}
}
message BatchToPusherMessage {
repeated SubToPusherMessage payload = 2;
}
message SubToPusherMessage {
oneof message {
UserJoinedZoneMessage userJoinedZoneMessage = 1;
GroupUpdateZoneMessage groupUpdateZoneMessage = 2;
UserMovedMessage userMovedMessage = 3;
GroupLeftZoneMessage groupLeftZoneMessage = 4;
UserLeftZoneMessage userLeftZoneMessage = 5;
ItemEventMessage itemEventMessage = 6;
}
}
service RoomManager {
rpc joinRoom(stream PusherToBackMessage) returns (stream ServerToClientMessage);
rpc listenZone(ZoneMessage) returns (stream BatchToPusherMessage);
}

File diff suppressed because it is too large Load diff