具体的な状況は以下の通りです:
![2NA)G`@Q9@J$]1%DZA]XW1P.png]1
計画では、クライアントが登録に成功した後、サーバーはクライアントにトークンを返し、このトークンに対応する sid をバインドします。新しいメッセージがある場合、サーバーはトークンを使用して sid を検索し、メッセージをプッシュします。
簡単そうですよね?しかし、問題はここにあります:sid をどのように記録しても、メッセージを正しくプッシュすることができず、クライアントは反応しません。さまざまな解決策を試した後、私は自分を苦しめるのをやめ、問題を v2ex に投げかけ、助けを求めました怠け者ではないです。
しかし、今日、希望が現れました:ある達人が解決策のコードを直接提供してくれました。問題が解決されたので、私は考え方を研究し始めました。一目見て、私は非常に大きなミスを犯していたことに気付きました:私がサーバーから取得した sid はサーバーのものであり、クライアントから sid を取得して、サーバーに sid を渡さなければ、サーバーはクライアントを特定してメッセージを送信することはできません。
初心者のミスですが、何日も悩んでいた問題が解決され、またバグを楽しく書くことができるようになりました。v 友達は本当にすごいと言わざるを得ませんが、自分のコーディングスキルを向上させる必要があるようです。そうしないと、次回は助けてくれる人に出会えないかもしれません。
2022 年 7 月 14 日