# Instalent socket workflow ###### tags: `Documentation` #### Data in request: ```javascript=16 const payload = { "request_user_id": "1", "service_id": "1", "city_id": "1", "full_address": "Da Nang", "booking_time": "2016-06-22 19:10:25-07", "time_range": "3.5" } ``` - Sequence for booking ```sequence Client->Socket Server: Init connection with header token Socket Server-->Client: response connection status ServiceProvider->Socket Server: Init connection Socket Server-->ServiceProvider: response connection status Client->Client: Booking action Client-> Socket Server: socket.emit('BOOKING_REQUEST', payload, callback) Socket Server-->Client: callback Client->Client: Update booking status to Booked Socket Server-->Socket Server: Find 5 service provider\nmatching with request Socket Server->ServiceProvider: socket.to('profileId')\n.emit('NEW_BOOKING_REQUEST', data, callback) ServiceProvider-->Socket Server: emit event to Socket Setver\nACCEPT|CANCEL|NOT_RESPONSE Socket Server-->Socket Server: Check response from Service Provider\nIf not ACCEPt will call to next user\n Socket Server->Client: socket.emit('BOOKING_SUCCESS', payload) ``` ```javascript=16 const payloadMsg = { "conversation_id": "conversationId", "profile_id": "1", "message": { "type": "text", "content": "hello" } } const payloadTypingOrSeen = { "conversation_id": "conversationId", "profile_id": "1", } ``` - Sequence for chating ```sequence Client->Socket: socket.emit(JOIN_ROOM_REQUEST, conversationId) Socket-->Client: socket.emit(JOIN_ROOM_SUCCESSED) ServiceProvider->Socket: socket.emit(JOIN_ROOM_REQUEST, conversationId) Socket-->ServiceProvider: socket.emit(JOIN_ROOM_SUCCESSED) Client->Socket: socket.emit(SEND_MESSAGE_REQUEST, payloadMsg) Socket-->Client: socket.emit(NEW_MESSAGE, payloadMsg) Socket->ServiceProvider: socket.emit(NEW_MESSAGE, payloadMsg) Client->Socket: socket.emit(TYPING_MESSAGE, payloadTypingOrSeen) Socket->ServiceProvider: socket.emit(TYPING_MESSAGE, payloadTypingOrSeen) ServiceProvider->Socket: socket.emit(MESSAGE_SEEN, payloadTypingOrSeen) Socket->Client: socket.emit(MESSAGE_SEEN, payloadTypingOrSeen) Client->Socket: socket.emit(LEAVE_ROOM_REQUEST, conversationId) Socket-->Client: socket.emit(LEAVE_ROOM_SUCCESSED) ```