我正在创建一个简单的网络游戏,它使用的网络套接字来流式更新HTTP AJAX请求,用于其他所有内容(例如登录系统、用户配置文件和c)。不幸的是,我对mod_python有些陌生,但似乎我想使用Sessions类来跟踪访问者。唯一的问题是,由于某种原因,会话需要mod_python请求。有没有一种方法可以在mod_pywebocket处理程序中使用这些会话,或者我需要滚动自己的会话机制?
如果有人可以使用它,我发现mod_python的会话与mod_pywebsocket配合得很好。以下是需要注意的两个注意事项:
初始化通常,您使用mod_python请求构造一个mod_pythonSession对象。幸运的是,mod_pywebsocket的作者有先见之明,使web套接字请求(您在web_socket_transfer_data参数中得到的请求)兼容。这意味着您可以像在mod_python中一样实例化会话(请参阅文档中的示例)。这可能看起来很明显,但对我来说不是。如果你在做这件事时出错,那你就做错了其他事情。
会话锁定需要记住的另一件事是,与给定ID关联的会话在默认情况下被锁定,并且该锁定在会话对象的生存期内持续存在。这意味着,如果您有两个web套接字使用来自同一主机的会话,其中一个可能会永远被阻塞。此外,文档指出,这些互斥锁可能需要非琐碎的系统资源。它们显然是为快速HTTP请求而设计的,而不是为持久的面向连接的使用而设计的。
修复会话的一种方法是禁用锁定,但这可能不是一件明智的事情。我还没有尝试过,但如果你尝试了,祝你在这些比赛条件下好运。我所做的是创建我只需要很短时间的会话,然后在完成后将"无"分配给它。显然with
子句不适用于这些会话。同样,这并不十分模糊,但如果你没有意识到引擎盖下发生了什么,它可能会导致一些头痛。