【问题标题】:"Unknown SID" error in Channel API Google App Engine - Python Client通道 API Google App Engine 中的“未知 SID”错误 - Python 客户端
【发布时间】:2014-02-21 20:15:06
【问题描述】:
【问题讨论】:
标签:
python
google-app-engine
channel-api
【解决方案1】:
我在编写 Node.js 模块以连接到 Channel 服务 https://github.com/gelleouet/nodejs-googleapp-channel 时遇到了同样的问题。我复制了可以正常工作的Java版本https://github.com/gvsumasl/jacc,我发现了问题。服务通道系统使用在侦听套接字时更改的会话 ID。如果没有很好地读取新值,则此错误“Unknow SID”会触发每个通道重新连接。这方面有几个步骤:
-
GET /talkgadget/d : 读取 clientId 和 sessionId(见 http 响应)
var a = new chat.WcsDataClient("https://talkgadget.google.com/talkgadget/",
"",
"957778AE55824F5D", // clientId
"Nnc1-h3uIHY", // sessionId
"1394484158",
"WCX",
"AHRlWrpfZ3LMYkQU8bjBsHNPApz7SB71Sc00N5Ug"
);
-
POST /talkgadget/dch/bind :读取 SID 和新的 sessionId(参见 http 响应)
[[0,["c","290B58E8BA60D97F",,8] // 290B58E8BA60D97F is SID
]
,[1,["b"]
] // 957778AE55824F5D is new sessionId
,[2,["c",['957778AE55824F5D', ["ei","E4jToU4lPn0","1394484158",0,28800000,57600000,28800000]
]]
]
]
POST /talkgadget/dch/bind:无事可做。
-
GET /talkgadget/dch/bind : 读取用户消息和新的 sessionId (所有带有 [xx,["c",['xxxxxx', ... 的消息都包含 sessionId)
[[147,["c",['957778AE55824F5D',["cds",1395328474416]
]]
]
]
如果您在第 2 步中没有读取正确的 SID 或每次读取 websocket 时都没有读取新的 sessionId,则始终会触发错误 400 Unknow SID。
- 第一个连接:请求 1、2、3、4。保持请求 4 处于活动状态
- 请求 4 关闭时重新连接
- 当错误 401(无效令牌)或有时 400(未知 sid)时重新连接 1、2、3、4