node.js中非常简单的websocket

node.js中非常简单的websocket,node.js,websocket,Node.js,Websocket,我的网站上有ShoutBox。它在客户端的websocket中实现,在后端的php中实现。作为研究的一部分,我决定重写node.js中的后端。我用PHP编写服务器,所以应该很简单 因此,我开始查找已完成的工作,此网站上的可用库: Socket.io->安装后,当我看到工作所需的代码和文件时,我想可以了。好的,有很多特性(例如:websocket、flash socket、AJAX长轮询),但是为什么呢?如果有人想要使用websocket,他们想要websocket,如果您的浏览器不支持它,请下

我的网站上有ShoutBox。它在客户端的websocket中实现,在后端的php中实现。作为研究的一部分,我决定重写node.js中的后端。我用PHP编写服务器,所以应该很简单

因此,我开始查找已完成的工作,此网站上的可用库:

Socket.io->安装后,当我看到工作所需的代码和文件时,我想可以了。好的,有很多特性(例如:websocket、flash socket、AJAX长轮询),但是为什么呢?如果有人想要使用websocket,他们想要websocket,如果您的浏览器不支持它,请下载最新版本。我可以写同样的支持协议(hixie…hybid->RFC6455从2011年12月开始已经足够了,1年),现在所有浏览器都支持RCF。拥有最旧版本浏览器的用户无论如何都需要更新他们的浏览器。所以这是很多不必要的代码

这只是我的想法,你不能同意,我在大公司没有很多开发经验。最后我决定找些更轻微的。我只需要支持RCF 6455

Ws->支持3协议,好的,我可以接受。我开始分析代码,5分钟后我就放弃了。我开始怀疑我的JavaScript知识

我检查了一些关于6-7库的东西,每个库都基于websocket.io或者有一些奇怪的代码。我在寻找PHP websocket服务器时也遇到了这种情况。我的代码有161行,在删除了所有不必要的东西(比如协议)之后,我很确定node.js中也会出现同样的结果。唯一的解决办法是编写自己的服务器

好的,转到node.js文档,我应该从哪里开始?完全糊涂了。使用http还是网络模块?以前的库使用http,但在net模块中是socket类,名称表明我需要它

我有net.connect(选项,[connectionListener])和net.connect(端口,[host],[connectListener])。为什么?不一样吗

我已经查找了示例代码,这是一个很好的地方。它不存在,唯一的例子是库。所以我有一个很大的要求,有人谁有自己的非常简单的websocket服务器可以与我分享,请?连接、握手、向所有连接的用户广播消息(消息按摩低于65535)

编辑: 我不可能放弃,除非有人能让文档可读

我忘记了在某些模块中,您还需要在客户端站点中包含文件。为何你能告诉我为什么有人在客户机已经存在的情况下编写客户机吗

在我贴的名单上,每个人都能得到?我发现有一个模块根本不工作。或者是基于socket.io的模块,都是一样的。为什么甚至有人写他们

我不明白为什么在这个情况下有人需要一些C++代码,而

WS模块有一个小的NIT拾取问题。关闭后,它们不会删除

套接字
对象数据,这会成为一个麻烦,因为所有数据都会被推入内存,并成为内存泄漏,直到V8垃圾收集器删除未使用的数据。从某种意义上说,这没什么,但是如果你有一个游戏服务器,或者一个非常活跃的游戏,人们正在刷新/加入频道/游戏/等等,那么额外的开销会增加相当多的不必要的内存使用。我相信,如果ws-module能够在关闭时删除临时套接字对象属性,而不是等待V8 GC关闭,那么它将工作得最好

话虽如此,这是一个最小的数据量,一般用户甚至不会注意到它,除非他们有一个非常活跃的服务器

无论如何,看看我昨晚发现的这颗宝石:

非常简单的支持文本web套接字的系统,具有非常非常简单的api。唯一的问题是,作者没有在代码中使用
try/catch
块,因此我确信您不想在生产服务器上使用它。与ws-module相比,它的开销非常小,在我的gameserver测试中,
nodejs
可以很好地工作


然而,ws-module和lark websocket同样易于使用。。我只是想你会更喜欢这一款,因为它看起来更“轻量级”,希望这能有所帮助。

你放弃了socket.io,因为它有很多功能?很明显,你不需要全部,只需要一两个。。你不应该仅仅为了理解和实现一些东西而分析整个图书馆,文档总是会提供关于图书馆中任何东西以及如何使用的信息。。认真地重新考虑一下socket.io,看看下面的例子。。不要重新发明轮子我不想重新发明轮子:D我只想要我理解的服务器。socket.io非常简单,所以请阅读。如果您打算使用开源项目,请学习如何重用社区所做的工作。它做了很多。