A method of peer-to-peer discovery and connection establishment for use with a peer-to-peer service, comprising: facilitating, by a collaboration service, an application session, wherein a plurality of client devices (112A, 112B, 112C) collaboratively interact within the application session, and wherein said facilitating comprises maintaining a state of the application session and passing the state of the application session among the plurality of client devices (112A, 112B, 112C); enabling, by the collaboration service, at least one of the plurality of client devices (112A, 112B, 112C) to discover the client devices that collaboratively interact within the application session, passing, by the collaboration service, one or more messages among the client devices to establish a peer-to-peer connection between a pair of the client devices, wherein passing the one or more messages comprises: - receiving a request to initiate a peer-to-peer connection from one of the plurality of client devices (112A, 112B, 112C); - broadcasting the request to the plurality of client devices (112A, 112B, 112C); and - passing (208, 210, 212, 214) offer and answer messages among the plurality of client devices (112A, 112B, 112C) according to an offer-answer protocol; characterised in that each of the plurality of client devices (112A, 112B, 112C) is a local peer device configured to: - obtain its own local session identifier from the collaboration service; - obtain, from the collaboration service, at least one remote session identifier for at least one remote peer device that is active in the application session; - determine whether the local session identifier is less than the at least one remote session identifier; - if the local session identifier is less than the at least one remote session identifier, sending an offer message to the at least one remote peer device; - receiving an answer message from the at least one remote peer device; and - establishing a peer-to-peer connection with the at least one remote peer device. facilitating, by a collaboration service, an application session, wherein a plurality of client devices (112A, 112B, 112C) collaboratively interact within the application session, and wherein said facilitating comprises maintaining a state of the application session and passing the state of the application session among the plurality of client devices (112A, 112B, 112C); enabling, by the collaboration service, at least one of the plurality of client devices (112A, 112B, 112C) to discover the client devices that collaboratively interact within the application session, passing, by the collaboration service, one or more messages among the client devices to establish a peer-to-peer connection between a pair of the client devices, wherein passing the one or more messages comprises: - receiving a request to initiate a peer-to-peer connection from one of the plurality of client devices (112A, 112B, 112C); - broadcasting the request to the plurality of client devices (112A, 112B, 112C); and - passing (208, 210, 212, 214) offer and answer messages among the plurality of client devices (112A, 112B, 112C) according to an offer-answer protocol; characterised in that each of the plurality of client devices (112A, 112B, 112C) is a local peer device configured to: - obtain its own local session identifier from the collaboration service; - obtain, from the collaboration service, at least one remote session identifier for at least one remote peer device that is active in the application session; - determine whether the local session identifier is less than the at least one remote session identifier; - if the local session identifier is less than the at least one remote session identifier, sending an offer message to the at least one remote peer device; - receiving an answer message from the at least one remote peer device; and - establishing a peer-to-peer connection with the at least one remote peer device. - receiving a request to initiate a peer-to-peer connection from one of the plurality of client devices (112A, 112B, 112C); - broadcasting the request to the plurality of client devices (112A, 112B, 112C); and - passing (208, 210, 212, 214) offer and answer messages among the plurality of client devices (112A, 112B, 112C) according to an offer-answer protocol; - obtain its own local session identifier from the collaboration service; - obtain, from the collaboration service, at least one remote session identifier for at least one remote peer device that is active in the application session; - determine whether the local session identifier is less than the at least one remote session identifier; - if the local session identifier is less than the at least one remote session identifier, sending an offer message to the at least one remote peer device; - receiving an answer message from the at least one remote peer device; and - establishing a peer-to-peer connection with the at least one remote peer device.