Skip to content

Presence can send both a Leave and Join event that cancel each other out.  #31

@acupofjose

Description

@acupofjose

I noticed that sending a Track Event manually whilst already joined to the channel causes both a Join and Leave eventto be raised. However, the Leave event is raised after the join making it appear as though I left when I didn't.

29 May 2023 12:08:29 Sending Track Event
29 May 2023 12:08:29 Realtime Client Debug Message: Socket Push [topic: realtime:11111111111111111111111111111111, event: presence, ref: 5d6df879-afa3-4961-8eea-c8f548630ad9]:	{  "event": "track",  "payload": {    "LastSeen": "2023-05-29T11:08:29.1576795Z",    "Email": "[email protected]",    "Name": "Daz Kuffs",    "ComputerName": "RAGE",    "UserID": "7aaab6a9-fe93-47e9-a3d0-eb717389cf9a",    "ConnectID": "00000000-0000-0000-0000-000000000000",    "SharedInstances": [      {        "InstanceID": "409f44f0-0542-49bc-bec5-47de2b59be48",        "InstanceName": "Ruffster",        "ComputerName": "RAGE",        "RemoteComputerID": "1a796a13-bd00-4a35-835e-648682a2601b",        "UserID": "7aaab6a9-fe93-47e9-a3d0-eb717389cf9a"      }    ]  }}
29 May 2023 12:08:29 Realtime Client Debug Message: Socket Message Received:	{"event":"phx_reply","payload":{"response":{},"status":"ok"},"ref":"5d6df879-afa3-4961-8eea-c8f548630ad9","topic":"realtime:11111111111111111111111111111111"}
29 May 2023 12:08:29 Realtime Client Debug Message: Socket Message Received:	{"event":"presence_diff","payload":{"joins":{"145bacf8-fe11-11ed-9abb-6a2047d90b67":{"metas":[{"phx_ref":"F2OYoo6yrtA9v9zm","phx_ref_prev":"F2OYnFmge_Q9v3RI","ComputerName":"RAGE","ConnectID":"00000000-0000-0000-0000-000000000000","Email":"[email protected]","LastSeen":"2023-05-29T11:08:29.1576795Z","Name":"Daz Kuffs","SharedInstances":[{"ComputerName":"RAGE","InstanceID":"409f44f0-0542-49bc-bec5-47de2b59be48","InstanceName":"Ruffster","RemoteComputerID":"1a796a13-bd00-4a35-835e-648682a2601b","UserID":"7aaab6a9-fe93-47e9-a3d0-eb717389cf9a"}],"UserID":"7aaab6a9-fe93-47e9-a3d0-eb717389cf9a"}]}},"leaves":{"145bacf8-fe11-11ed-9abb-6a2047d90b67":{"metas":[{"phx_ref":"F2OYnFmge_Q9v3RI","ComputerName":"RAGE","ConnectID":"00000000-0000-0000-0000-000000000000","Email":"[email protected]","LastSeen":"2023-05-29T11:08:02.5031865Z","Name":"Daz Kuffs","SharedInstances":[{"ComputerName":"RAGE","InstanceID":"409f44f0-0542-49bc-bec5-47de2b59be48","InstanceName":"Ruffster","RemoteComputerID":"1a796a13-bd00-4a35-835e-648682a2601b","UserID":"7aaab6a9-fe93-47e9-a3d0-eb717389cf9a"}],"UserID":"7aaab6a9-fe93-47e9-a3d0-eb717389cf9a"}]}}},"ref":null,"topic":"realtime:11111111111111111111111111111111"}
29 May 2023 12:08:29 Presence Sync: Daz Kuffs on RAGE
29 May 2023 12:08:29 Presence Join: Daz Kuffs on RAGE
29 May 2023 12:08:29 Presence Leave: Daz Kuffs on RAGE

I notice that the Json for the Join Event apparently (with my limited knowledge) contains a reference to the Leave event in the : phx_ref_prev field.

Maybe some internal magic needs to check for this and not raise events when they cancel each other out. Personally, I feel that this should only have raised a Sync event and neither a Join or Leave.

Here is the Json for easier viewing.

{
"event": "presence_diff",
"payload":
    {
    "joins":
        {
        "145bacf8-fe11-11ed-9abb-6a2047d90b67":
            {
            "metas":
                [
                    {
                    "ComputerName": "RAGE",
                    "ConnectID": "00000000-0000-0000-0000-000000000000",
                    "Email": "[email protected]",
                    "LastSeen": "2023-05-29T11:08:29.1576795Z",
                    "Name": "Daz Kuffs",
                    "phx_ref": "F2OYoo6yrtA9v9zm",
                    "phx_ref_prev": "F2OYnFmge_Q9v3RI", ' MATCH '
                    "SharedInstances":
                        [
                            {
                            "ComputerName": "RAGE",
                            "InstanceID": "409f44f0-0542-49bc-bec5-47de2b59be48",
                            "InstanceName": "Ruffster",
                            "RemoteComputerID": "1a796a13-bd00-4a35-835e-648682a2601b",
                            "UserID": "7aaab6a9-fe93-47e9-a3d0-eb717389cf9a"
                            }
                        ],
                    "UserID": "7aaab6a9-fe93-47e9-a3d0-eb717389cf9a"
                    }
                ]
            }
        },
    "leaves":
        {
        "145bacf8-fe11-11ed-9abb-6a2047d90b67":
            {
            "metas":
                [
                    {
                    "ComputerName": "RAGE",
                    "ConnectID": "00000000-0000-0000-0000-000000000000",
                    "Email": "[email protected]",
                    "LastSeen": "2023-05-29T11:08:02.5031865Z",
                    "Name": "Daz Kuffs",
                    "phx_ref": "F2OYnFmge_Q9v3RI", ' MATCH '
                    "SharedInstances":
                        [
                            {
                            "ComputerName": "RAGE",
                            "InstanceID": "409f44f0-0542-49bc-bec5-47de2b59be48",
                            "InstanceName": "Ruffster",
                            "RemoteComputerID": "1a796a13-bd00-4a35-835e-648682a2601b",
                            "UserID": "7aaab6a9-fe93-47e9-a3d0-eb717389cf9a"
                            }
                        ],
                    "UserID": "7aaab6a9-fe93-47e9-a3d0-eb717389cf9a"
                    }
                ]
            }
        }
    },
"ref": null,
"topic": "realtime:11111111111111111111111111111111"
}

Originally posted by @Kuffs2205 in #29 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions