pandemonium_demo_projects/networking/webrtc_signaling
2023-04-06 20:35:17 +02:00
..
client Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
demo Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
screenshots Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
server Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
server_node Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
.gitignore Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00
project.pandemonium Renamed project.godot files. 2023-04-06 20:35:17 +02:00
README.md Initial commit. I'ts https://github.com/godotengine/godot-demo-projects 's master branch. commit: 219e37b5928594281e8cfd95d1db186fde975846 . 2022-12-31 23:03:26 +01:00

A WebSocket signaling server/client for WebRTC.

This demo divided into 4 parts:

  • The server folder contains the signaling server implementation written in GDScript (so it can be run by a game server running Godot)
  • The server_node folder contains the signaling server implementation written in Node.js (in case you dont want to run a godot game server).
  • The client folder contains the client implementation in GDScript.
    • It handles both the protocol and WebRTCMultiplayer separately.
  • The demo contains a small app that uses it.

NOTE: You must extract the latest version of the WebRTC GDNative plugin in the project folder to run on a desktop.

Language: GDScript

Renderer: GLES 2

Check out this demo on the asset library: https://godotengine.org/asset-library/asset/537

Protocol

The protocol is text based, which is composed of a command and possibly multiple payload arguments, each separated by a new line.

Messages without payload must still end with a newline and are the following:

  • J: (or J: <ROOM>), must be sent by the client immediately after connecting to get a lobby assigned or join a known one. These messages are from the server back to the client to notify the client of the assigned lobby, or simply of a successful join.
  • I: <ID>, sent by the server to identify the client when it joins a room.
  • N: <ID>, sent by the server to notify new peers in the same lobby.
  • D: <ID>, sent by the server to notify when a peer in the same lobby disconnects.
  • S: , sent by a client to seal the lobby (only the client that created it is allowed to seal a lobby).

When a lobby is sealed, new clients will be unable to join, and the lobby will be destroyed (and clients disconnected) after 10 seconds.

Messages with payload (used to transfer WebRTC parameters) are:

  • O: <ID>, used to send an offer.
  • A: <ID>, used to send an answer.
  • C: <ID>, used to send a candidate.

When sending the parameter, a client will set <ID> as the destination peer, the server will replace it with the id of the sending peer, then relay it to the proper destination.

Screenshots

Screenshot