我正在构建需要使用套接字连接与另一个应用程序通信的Web应用程序。这对我来说是一个新的领域,所以要确保sockets与websockets不同。看起来它们只是在概念上相似。
问起因为我最初计划使用Django作为我的项目的基础,但是在我上面链接的SO帖子中,很明显webocket是不可能的(或者至少不可靠,即使像django-websockets这样的东西也是如此)使用首选的Django设置(Apache与mod_wsgi)。然而,我发现其他帖子随便导入Python的套接字模块,就像grabbing the server's hostname这样简单。
所以:
回答你的问题。
Websockets在其实现中使用套接字。 Websockets基于标准协议(现在在最终调用中,但尚未最终),定义了连接“握手”和消息“帧”。双方通过握手程序相互接受连接,然后使用标准消息格式(“帧”)来回传递消息。
我正在开发一个框架,允许您使用已安装的软件直接与机器进行通信。它可能适合您的目的。如果您愿意,可以关注我的博客:http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html
WebSocket只是TCP协议上的另一个应用程序级协议,就像HTTP一样。
下面引用一些片段<Spring in Action 4>,希望它可以帮助您更好地理解WebSocket。
在最简单的形式中,WebSocket只是两个应用程序之间的通信通道(不一定涉及浏览器)... WebSocket通信可以在任何类型的应用程序之间使用,但WebSocket的最常见用途是促进之间的通信。服务器应用程序和基于浏览器的应用程序
关于您的问题(b),请注意Websocket规范尚未最终确定。根据W3C:
实现者应该意识到这个规范不稳定。
我个人认为Websockets目前使用过于流畅。虽然我可能会在一年左右的时间内发现它们有用。
我责怪“WebSocket”这个名字。它们在很多方面都有所不同。他们唯一常见的事情是他们都进行网络通信。
python中的sockets
只是一个BSD套接字实现库,可以建立与TCP / IP相关的连接。虽然WebSocket构建在现有的HTTP协议之上并“升级”与WebSocket协议的连接,因为在HTTP中建立双工连接并不容易。