Files
voice-call-service/internal/protocol/messages.js
2026-05-29 01:06:47 +03:00

49 lines
2.9 KiB
JavaScript

// Message type constants
export const TypeAuthenticate = 'authenticate';
export const TypeCreateSession = 'create_session';
export const TypeJoinSession = 'join_session';
export const TypeOffer = 'offer';
export const TypeAnswer = 'answer';
export const TypeICECandidate = 'ice_candidate';
export const TypeHeartbeat = 'heartbeat';
export const TypeEndCall = 'end_call';
export const TypeAuthenticated = 'authenticated';
export const TypeSessionCreated = 'session_created';
export const TypeSessionJoined = 'session_joined';
export const TypeParticipantJoined = 'participant_joined';
export const TypeParticipantLeft = 'participant_left';
export const TypeCallTimeout = 'call_timeout';
export const TypeCallEnded = 'call_ended';
export const TypePong = 'pong';
export const TypeUnauthorized = 'unauthorized';
export const TypeError = 'error';
// Error codes
export const ErrRideNotActive = 'ride_not_active';
export const ErrRideAlreadyStarted = 'ride_already_started';
export const ErrRideCancelled = 'ride_cancelled';
export const ErrSessionExists = 'session_exists';
export const ErrSessionNotFound = 'session_not_found';
export const ErrSessionFull = 'session_full';
export const ErrUnauthorizedUser = 'unauthorized_user';
export const ErrTokenExpired = 'token_expired';
export const ErrTokenInvalid = 'token_invalid';
export const ErrPayloadTooLarge = 'payload_too_large';
export const ErrRateLimited = 'rate_limited';
// Helper constructors for encoding server messages
export const newAuthenticated = (userID, iceServers) => JSON.stringify({ type: TypeAuthenticated, user_id: userID, ice_servers: iceServers });
export const newSessionCreated = (sessionID, rideID, expiresIn) => JSON.stringify({ type: TypeSessionCreated, session_id: sessionID, ride_id: rideID, expires_in: expiresIn });
export const newSessionJoined = (sessionID, rideID) => JSON.stringify({ type: TypeSessionJoined, session_id: sessionID, ride_id: rideID });
export const newParticipantJoined = (role) => JSON.stringify({ type: TypeParticipantJoined, role });
export const newRelayOffer = (sdp) => JSON.stringify({ type: TypeOffer, sdp });
export const newRelayAnswer = (sdp) => JSON.stringify({ type: TypeAnswer, sdp });
export const newRelayICE = (candidate) => JSON.stringify({ type: TypeICECandidate, candidate });
export const newParticipantLeft = (role) => JSON.stringify({ type: TypeParticipantLeft, role });
export const newCallTimeout = (reason) => JSON.stringify({ type: TypeCallTimeout, reason });
export const newCallEnded = (reason) => JSON.stringify({ type: TypeCallEnded, reason });
export const newPong = () => JSON.stringify({ type: TypePong });
export const newUnauthorized = (reason) => JSON.stringify({ type: TypeUnauthorized, reason });
export const newError = (code, message) => JSON.stringify({ type: TypeError, code, message });