易于编程的WebSocket服务器

5
我正在了解WebSocket,但是我找不到一个好的WebSocket服务器并且容易编写一些示例...
我是一个完全的初学者,我不需要支持大并发的服务器,我只想尝试一些示例...
有什么帮助吗?
谢谢!

一些测试,比如聊天、数据流传输等,只是为了尝试从客户端使用WebSockets。 - Andres
@bksi,那个例子是一个套接字服务器。WebSockets是一种具有特定握手和数据帧的协议。 - kanaka
4个回答

2
请记住,WebSocket 是一项新技术。最近的草案协议刚刚被提交以成为实际标准。Opera 甚至还不支持最新的协议,而微软则远远落后(部分实现据说将在版本 10 MSIE 中可用)。Chrome 在开发版本中支持它。Firefox 最近发布了支持它的第七个版本。如果您需要成为“开发社区”的早期采用者,请不要感到惊讶:即随着工具变得成熟和教程变得更加丰富,您需要自行解决问题。
您可以关注我的博客。我正在创建一些看起来就是您所寻找的内容,并且将免费分发给开发人员。尽管它还没有准备好分发,但时机可能很好。它将与称为HLL框架的部分集成,这将使应用程序更容易开发。我还希望能够使用脚本(包括JavaScript)开发后端应用程序组件。我已经在HLL框架中完成了一些工作。有一个工作演示,您可以下载dhtml / javascript客户端,很快还会有一个非浏览器客户端,您也可以使用它来构建应用程序组件。服务器使用纯Sun(Oracle)Java构建,在Linux和Windows上运行同样良好。由于它还提供脚本引擎,因此使用脚本编写的应用程序组件也将是可移植的。
Websocket服务器支持最新版本的建议协议,该协议现已提交成为实际的websocket标准。演示将在Chrome dev-channel(也称为Chromium)14或更高版本上运行。同时,Firefox 7也已发布(不再是Beta版)。

顺便说一下:HLL(包括WebSocket服务器)旨在快速轻便。我一直将其作为要求进行维护。但是当某些应用程序需要扩展以处理非常大的流量负载时,我也会有一个答案。(我不确定我的当前版本是否可以,尽管可能?没有测试过。) - Roger F. Gay
哈,你正在做我想做的事情...以为我是世界上唯一一个这样做的人,我已经谷歌了几个小时也没有找到答案!我现在开始建立自己的小型原始服务器,我希望我能完成握手,因为我认为那是最难的部分... - Andres
你会发现,一旦你掌握了握手的技巧,这只是个开始 :) - Roger F. Gay
我认为因为“websocket”一词中包含“socket”一词,人们往往会认为构建一个websocket服务器就像基于一个Java Trail教程的简单socket服务器一样。这正是我一开始寻找的。但实际上并非如此。 - Roger F. Gay
关于浏览器支持的说明:Chrome非开发/标准版本长期以来一直支持WebSocket。它也支持Safari(包括移动版)、Firefox 6(包括移动版)及以上版本(有关MozWebSocket的说明请参见:https://developer.mozilla.org/en/WebSockets),最新版Opera浏览器和Windows 8上的IE10也支持。处理不支持WebSocket的浏览器最常见的技术是简单地使用WebSocket JS Flash fallback。WebSocket协议现在已经不再是一个频繁变动的目标。 - leggetter
显示剩余3条评论

1

最受欢迎的服务器端JavaScript框架是NodeJS,目前在Linux上运行效果最佳,而Windows版本正在开发中。

http://nodejs.org/

请按照此处的安装说明进行操作:

https://github.com/joyent/node/wiki/Installation

安装Node和NPM后,安装socket.io包:

npm install socket.io

然后访问http://socket.io/,了解API的介绍,您可以查看服务器端JavaScript和客户端JavaScript。


据我所知,node.js在支持更新协议方面相当落后。这是真的吗?(hybi-6?)它还被描述为“websocket兼容”的http服务器,而不是websocket服务器。我不确定这是什么意思。github.com/guille/node.websocket.js - Roger F. Gay
node.js 本身没有对 WebSockets 的直接支持 - 这里提到的支持和我的回答都是第三方库。 - Alnitak
是的,我早就注意到了。我发现这个“第三方”与node.js项目有关,并且该软件包可从websocket或ws.nodejs.com等子目录中获取,但其他人也尝试添加自己的支持。 - Roger F. Gay
我想知道Node.js的爱好者是如何确定Node.js是“最流行”的。 - Roger F. Gay
@RogerF.Gay 我并不是一个狂热的Node粉丝,但我确实使用过它。我的意思是,Node是最受欢迎的“服务器端JavaScript框架”,还有什么其他选项比它“更受欢迎”呢? - dmck
显示剩余2条评论

0

如果你想要一个用JavaScript编写的WebSocket服务器,我建议你看看Socket.IO。它非常简单易用,而且有很多在线文档和示例。

如果你想玩一下低级别的WebSocket服务器,而JavaScript不是必须的话,你可以看看我基于Python的websockify项目。websocket.py模块是一个通用的WebSocket服务器框架。在tests目录中有一些简单的使用示例。Websockify本身是基于websocket.py构建的,用于创建一个相当复杂的WebSocket到原始套接字的桥接/代理。


Socket.IO 不是 WebSocket 服务器 - 它是一个通用的网络套接字通信库,如果支持,可以使用 WebSocket 作为传输。 - Alnitak
@Alnitak。实际上,Socket.IO 一个WebSocket服务器。是的,它不仅仅是一个WebSocket服务器(就像Apache是一个Web服务器,尽管可以配置为提供其他协议,如FTP)。而且,您可以配置它使用替代传输作为回退,但默认/优先级传输是WebSocket。API类似于WebSocket API(在许多方面基于它),但通过会话管理和其他漂亮功能进行了扩展。 - kanaka
这就是我的观点 - 你必须使用特殊的客户端Socket.IO对象及其API。这不是“纯粹”的WebSockets - 你不能直接打开一个ws://.../ URL到一个Socket.IO服务器,并期望标准的WebSocket API能够在其上工作。 - Alnitak

0

我用 node.ws.js 取得了好的结果。

不过需要注意的是,它目前与 Chrome 14 不兼容,因为 Chrome 现在实现了最新版本的 IETF Hybi 规范,而 node.ws.js 还没有跟上。

不过它可以和所有版本的 Safari(包括移动版)很好地配合使用。


据我所知,node.js在支持最新协议方面还有很大的提升空间。这是真的吗?(hybi-6?)它也被描述为一个“websocket兼容”的http服务器,而不是一个websocket服务器。我不确定这是什么意思。 https://github.com/guille/node.websocket.js/ - Roger F. Gay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接