1
Fork 0
mirror of https://github.com/jech/galene.git synced 2024-11-24 17:45:58 +01:00
Commit graph

105 commits

Author SHA1 Message Date
Juliusz Chroboczek
1c71a73f8e Fix remainders of old file transfer protocol. 2024-10-28 15:55:09 +01:00
Juliusz Chroboczek
eb72069c9b Add id to chat messages. 2024-08-17 16:56:06 +02:00
Juliusz Chroboczek
4fb0b3334a Simplify peer-to-peer file transfer. 2024-08-17 16:56:06 +02:00
Juliusz Chroboczek
dd979652c2 Handle cancelled file transfer in initial callback.
If the client cancelled a file upload in the initial callback,
we would incorrectly proceed with the handshake.
2024-08-11 17:38:55 +02:00
Juliusz Chroboczek
242875e55c Implement a client-side timeout.
We already had a server-side timeout, but it didn't prevent
a client from hanging when it lost connectivity with the server.
2024-06-10 21:33:31 +02:00
Juliusz Chroboczek
7151fad149 Simplify the initial connection protocol.
The ServerConnection.connect method is no longer async,
we rely on the onconnected callback only.  The onconnected
callback is now only called after the initial handshake
completes.  There is a new onerror callback.
2024-06-10 21:12:47 +02:00
Juliusz Chroboczek
0fc9136774 Allow HTML elements in addToChatbox. 2023-12-08 23:41:51 +01:00
Juliusz Chroboczek
cc2ed14484 Reset c.sc after calling onclose.
The onclose callback might want to access c.sc.
2023-08-29 01:42:48 +02:00
Juliusz Chroboczek
892a4b8401 Fix parsing of server version. 2023-08-28 23:07:01 +02:00
Jackson Vieira
1ad91adf89 Fix audio activity detection for downstreams
Replaced the non-existent `track` property in `RTCStatsType`
with the valid `inbound-rtp` property.
2023-08-28 22:47:46 +02:00
Juliusz Chroboczek
a701d8c6fa Remove client-side support for protocol version 1. 2023-07-16 15:54:58 +02:00
Juliusz Chroboczek
e786e1bd11 Pass file transfer cancel message to callback. 2023-04-28 16:57:00 +02:00
Juliusz Chroboczek
ac1dc77b30 Reconnect when server complains about a username.
If a token does not specify a username, the server will request
one by failing the join message.  Disconnect from the WebSocket
in that case, and display the login dialog with the password
field invisible.
2023-04-04 01:22:05 +02:00
Juliusz Chroboczek
8c1510023f Implement user interface for token management. 2023-04-04 01:22:05 +02:00
Juliusz Chroboczek
59ff25310d Don't set group if joining failed.
We used to set sc.group even if joining failed, which would cause
us to spuriously call the onJoined callback when we disconnected.
2023-04-03 22:57:36 +02:00
Juliusz Chroboczek
58ef60f974 Minor tweaks to file transfer.
Avoid copying data when sending, improve error handling.
2023-01-22 22:24:51 +01:00
Juliusz Chroboczek
fae045fb61 Client-side support for protocol version 2.
This does not yet support the new 'need-username' error.
2022-12-16 18:38:30 +01:00
Juliusz Chroboczek
397892d906 Add forgotten time field to message typedef. 2022-12-16 17:56:41 +01:00
Juliusz Chroboczek
56baddc948 Make groupAction take an arbitrary parameter. 2022-10-23 16:04:10 +02:00
Juliusz Chroboczek
533e4b9b32 Version the protocol.
The handshake message now contains a list of supported protocol
versions.  Version mismatch is currently a warning, but it will be a
hard error in the future.
2022-09-02 14:30:51 +02:00
Jeroen van Veen
a21134d310 Fix usage of serverConnection in protocol.js
serverConnection is the global value in galene.js.
2022-08-29 20:15:19 +02:00
Juliusz Chroboczek
c5e5455e47 Document file transfer javascript. 2022-08-04 19:14:35 +02:00
Juliusz Chroboczek
b821cd71a9 Check MIME type in auth server response. 2022-08-03 15:00:50 +02:00
Juliusz Chroboczek
d69c517137 Allow auth server to fallback to password auth.
The authorisation server can now reply with 204 (no content)
in order to request that the client should continue with password
authentication.
2022-08-02 18:12:17 +02:00
Juliusz Chroboczek
3bdd82f06d Rework file transfer.
Split into the protocol (in protocol.js) and the user interface
(in galene.js).  Make the state automaton explicit, and improve
error-handling.  The new protocol is incompatible with the old one.
2022-07-25 18:54:52 +02:00
Juliusz Chroboczek
eb21c1ab20 Maintain stream information for oneself.
We used to maintain stream information for all users except oneself.
2022-03-25 18:21:03 +01:00
Juliusz Chroboczek
e303992e45 Call onuser when deleting stream. 2022-03-25 17:04:31 +01:00
Juliusz Chroboczek
55ae4a684b Remove parameter from the onpeerconnection callback.
The distinction is not likely to be useful, and it doesn't make
sense in all cases.
2022-03-23 00:11:12 +01:00
Juliusz Chroboczek
8d4bafe05c Tweak documentation of protocol.js. 2022-03-23 00:08:16 +01:00
Juliusz Chroboczek
34b21a2598 Add preference forceRelay.
This may be useful to get around network blocks in some cases.
2022-03-22 18:23:16 +01:00
Juliusz Chroboczek
d798cfec75 Fix simulcast statistics display for Firefox.
Firefox doesn't include the rid in the statistics result.
Use the SSID instead.
2022-03-20 22:34:39 +01:00
Juliusz Chroboczek
a86fb08f6c Replace ClientPermissions with a list of strings.
Now that we support external auth, the permissions list is
open-ended.  Make it a list for simplicity.
2022-02-19 23:44:57 +01:00
Juliusz Chroboczek
03811db37d Implement token authentication. 2022-02-18 13:35:17 +01:00
Juliusz Chroboczek
14ca47651b Fix data parameter of ServerConnection.join.
This was broken when we renamed status to data.  Thanks to
Sylvie Tissot.
2022-02-05 13:48:05 +01:00
Juliusz Chroboczek
24187430e8 Rename client status to data, add group data.
We now distinguish between status, which is maintained by the server,
and data, which is provided by the client.  In addition to client data,
we now support group data.
2022-01-29 23:28:08 +01:00
Juliusz Chroboczek
710cc3cc14 Add ability to set initial user status.
Setting the status after joining (using the "setstatus" action)
may cause multiple "user" messages to be sent to clients.  Add
the ability to set the initial status at join time.
2022-01-28 22:21:19 +01:00
Juliusz Chroboczek
29b4734bc4 Adapt typing to TypeScript 4.5.4. 2022-01-25 01:22:59 +01:00
Juliusz Chroboczek
f72061996c Fix error handling in gotClose. 2021-11-27 21:30:07 +01:00
Juliusz Chroboczek
09c5ba0d06 Protect against tracks without a stream. 2021-09-16 17:19:19 +02:00
Juliusz Chroboczek
b527c8757a Add chathistory message. 2021-07-31 14:42:26 +02:00
Juliusz Chroboczek
a25d46314a Fix documentation of onerror callback. 2021-07-30 17:40:15 +02:00
Juliusz Chroboczek
b9c1968b48 Treat closing unknown streams as a warning. 2021-07-16 23:10:13 +02:00
Juliusz Chroboczek
52a26327d7 Implement group status.
We now inform clients of the status of a group (locked, etc.).  Also
cleans up the handling of administrative messages, which solves the
issue of receiving "user" before "joined".
2021-07-16 19:51:54 +02:00
Juliusz Chroboczek
2da8faa8cf Implement per-stream requests. 2021-05-14 23:21:14 +02:00
Juliusz Chroboczek
c18ec32c85 Protect against closed streams in recomputeUserStreams. 2021-05-13 04:09:56 +02:00
Juliusz Chroboczek
795a40ceaf Simulcast. 2021-05-08 21:12:29 +02:00
Juliusz Chroboczek
acca3f9bb3 Maintain kinds of tracks in user data structure.
Needed to show in the user list whether a user is publishing a stream.
2021-04-29 21:10:04 +02:00
Juliusz Chroboczek
be73380f9f Label streams, not tracks.
We used to label tracks individually, in a view to using the labelling
for simulcast.  Since then, the WebRTC community has converged on a
different strategy, where multiple tracks share a single mid and
are labelled with the rid extension.

We now label whole streams, which is simpler, and use the track's
kind (and, in the future, the rid) to disambiguate.  This changes the
protocol in two ways:

  * in offers, the "labels" dictionary is replaced by a single "label"
    field; and
  * the syntax of the "request" message has changed.
2021-04-29 18:28:16 +02:00
Juliusz Chroboczek
3ba2394be7 Implement user statuses.
The server now maintains a set of statuses for each user that are not
interpreted by the server but communicated to the other members of the
group using 'user' messages.
2021-04-28 17:01:05 +02:00
Juliusz Chroboczek
f0a39fca48 Send user permissions to client.
We now maintain the user list in the serverConnection.
2021-04-28 00:07:19 +02:00