通道API中出现“未知SID”错误Google App Engine Python Clien

2024-10-04 03:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

由于googleappengine没有为channelapi提供正式的python客户机API,所以我遵循以下代码https://bitbucket.org/lohre/gae_channel/src/8bd89615ac83?at=default

问题是我在2-3分钟后或有时立即收到“未知SID”错误。我也找到了修复程序,找到了这个Constant disconnects due to channels going stale for no reason

然而,建议的解决方案是针对JavaScript客户端的。有人能看看代码并指导我如何消除这个错误吗。我想关闭连接并重新启动会起作用(正如建议的那样),但我也做不到。感谢任何帮助!!谢谢!!


Tags: 代码httpsorgsrcapibitbucket客户机错误
1条回答
网友
1楼 · 发布于 2024-10-04 03:26:43

当我写一个节点.js连接到频道服务https://github.com/gelleouet/nodejs-googleapp-channel的模块。我复制了正常工作的Java版本https://github.com/gvsumasl/jacc,我发现了问题。服务通道系统使用在侦听套接字时更改的会话ID。如果新值读取不好,则此错误“Unknow SID”将触发每个通道重新连接。在这方面有几个步骤:

  1. GET/talkgadget/d:读取clientId和sessionId(参见http响应)

    var a = new chat.WcsDataClient("https://talkgadget.google.com/talkgadget/",
    "",
    "957778AE55824F5D", // clientId
    "Nnc1-h3uIHY", // sessionId
    "1394484158",
    "WCX",
    "AHRlWrpfZ3LMYkQU8bjBsHNPApz7SB71Sc00N5Ug"
    );        
    
  2. 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] 
    ]]
    ]
    ]
    
  3. POST/talkgadget/dch/bind:没什么可做的。

  4. 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

相关问题 更多 >