- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试使用 Node.js's ReadLine与 a socket ,就像这样:
var net = require('net');
var rl = require('readline');
this.streamServer = net.createServer(function (socket) {
var i = rl.createInterface(socket, socket);
i.on('line', function (line) {
socket.write(line);
});
});
this.streamServer.maxConnections = 1;
this.streamServer.listen(7001);
当我 telnet 到端口 7001 并开始输入文本时,它会在我按下 Enter 之前立即回显给我。
为什么 ReadLine 没有等待整行?
我也试过.question()
我得到了相同的结果...在接收到任何数据时触发回调,而无需等待行尾字符。
编辑:这变得更奇怪了。当我使用 Windows telnet 客户端进行测试时,我得到了上述行为。但是,如果我使用 PuTTY 作为客户端进行测试,ReadLine 可以工作,即使在 Windows 上也是如此。我做了一些数据包捕获。也许有人可以对此有所了解?未缩进的行是来自客户端的数据。缩进的行是服务器回复。
使用 Windows Telnet
00000000 61 a
00000000 61 a
00000001 62 b
00000001 62 b
00000002 63 c
00000002 63 c
00000003 64 d
00000003 64 d
00000004 65 e
00000004 65 e
00000005 66 f
00000005 66 f
00000006 67 g
00000006 67 g
00000007 68 h
00000007 68 h
00000008 69 i
00000008 69 i
00000009 6a j
00000009 6a j
0000000A 6b k
0000000A 6b k
0000000B 6c l
0000000B 6c l
0000000C 6d m
0000000C 6d m
0000000D 6e n
0000000D 6e n
0000000E 6f o
0000000E 6f o
0000000F 70 p
0000000F 70 p
00000010 0d 0a ..
00000010 0d 0a ..
00000012 0d 0a ..
00000012 0d 0a ..
00000014 0d 0a ..
00000014 0d 0a ..
00000016 61 a
00000016 61 a
00000017 73 s
00000017 73 s
00000018 64 d
00000018 64 d
00000019 66 f
00000019 66 f
0000001A 0d 0a ..
0000001A 0d 0a ..
0000001C 61 a
0000001C 61 a
0000001D 73 s
0000001D 73 s
0000001E 64 d
0000001E 64 d
0000001F 66 f
0000001F 66 f
00000020 0d 0a ..
00000020 0d 0a ..
使用 PuTTY
00000000 ff fb 1f ff fb 20 ff fb 18 ff fb 27 ff fd 01 ff ..... .. ...'....
00000010 fb 03 ff fd 03 .....
00000000 ef bf bd ef bf bd 1f ef bf bd ef bf bd 20 ef bf ........ ..... ..
00000010 bd ef bf bd 18 ef bf bd ef bf bd 27 ef bf bd ef ........ ...'....
00000020 bf bd 01 ef bf bd ef bf bd 03 ef bf bd ef bf bd ........ ........
00000030 03 .
00000015 61 62 63 64 65 66 67 abcdefg
0000001C 0d 0a ..
00000031 61 62 63 64 65 66 67 abcdefg
00000038 0d 0a ..
0000001E 61 73 64 66 asdf
00000022 0d 0a ..
0000003A 61 73 64 66 asdf
0000003E 0d 0a ..
00000024 61 73 64 66 asdf
00000028 0d 0a ..
00000040 61 73 64 66 asdf
00000044 0d 0a ..
0000002A 0d 0a ..
00000046 0d 0a ..
最佳答案
这是 node.js 中的一个错误,ReadLine 的接口(interface)在每个 'data' 事件上调用 _normalWrite() 并且 _normaWrite 有一条注释说它应该尝试在换行符上换行,但目前它是 just calls _onLine() .
类似的东西应该会为你解决这个问题:
i._normalWrite = function(b) {
if(b == undefined) {
return;
}
if(!this._line_buffer) {
this._line_buffer = '';
}
this._line_buffer += b.toString();
if(this._line_buffer.indexOf('\n') !=-1 ) {
var lines = this._line_buffer.split('\n');
// either '' or the unfinished portion of the next line
this._line_buffer = lines.pop();
lines.forEach(function(line) {
this._onLine(line + '\n');
}, this);
}
};
我没有对此进行测试,可能还需要考虑 \r
。请让我知道它是否适合您,如果适合,那么我们中的一个应该向 Node 发送拉取请求。
关于javascript - Node.js ReadLine 不等待套接字连接的完整行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9962197/
我使用下拉菜单提供一些不同的链接,但我希望这些链接在同一选项卡中打开,而不是在新选项卡中打开。这是我找到的代码,但我对 Javascript 非常缺乏知识 var urlmenu = docume
我对 javascript 不太了解。但我需要一个垂直菜单上的下拉菜单,它是纯 JavaScript,所以我从 W3 复制/粘贴脚本:https://www.w3schools.com/howto/t
我已经坐了 4 个小时,试图让我的导航显示下 zipper 接垂直,但它继续水平显示它们。我无法弄清楚为什么会发生这种情况或如何解决它。 如果有人能告诉我我做错了什么,我将不胜感激。我有一个潜移默化的
我正在尝试创建选项卡式 Accordion 样式下拉菜单。我使用 jQuery 有一段时间了,但无法使事件状态达到 100%。 我很确定这是我搞砸的 JS。 $('.service-button').
对于那些从未访问过 Dropbox 的人,这里是链接 https://www.dropbox.com/ 查看“登录”的下拉菜单链接。我如何创建这样的下 zipper 接? 最佳答案 这是 fiddle
我正在制作一个 Liferay 主题,但我在尝试设计导航菜单的样式时遇到了很多麻烦。我已经为那些没有像这样下拉的人改变了导航链接上的经典主题悬停功能: .aui #navigation .nav li
如果您将鼠标悬停在 li 上,则会出现一个下拉菜单。如果您将指针向下移至悬停时出现的 ul,我希望链接仍然带有下划线,直到您将箭头从 ul 或链接移开。这样你就知道当菜单下拉时你悬停在哪个菜单上。 知
我有一个带有多个下拉菜单的导航栏。因此,当我单击第一个链接时,它会打开下拉菜单,但是当我单击第二个链接时,第一个下拉菜单不会关闭。 (所以如果用户点击第二个链接我想关闭下拉菜单) // main.js
我正在尝试制作一个导航下拉菜单(使用 Bootstrap 3),其中链接文本在同一行上有多个不同的对齐方式。 在下面的代码中,下拉列表 A 中的链接在 HTML 中有空格字符来对齐它们,但是空白被忽略
我希望有人能帮我解决这个 Bootstrap 问题,因为我很困惑。 有人要求我在底部垂直对齐图像和其中包含图像的链接。 我面临的问题是他们还希望链接在链接/图像组合上具有 pull-right,这会杀
我正在构建一个 Rails 应用程序,并希望指向我的类的每个实例的“显示”页面的链接显示在“索引”页面的下拉列表中。我目前正在使用带有 options_from_collection_for_sele
我有以下 Bootstrap3 导航菜单 ( fiddle here )。我想设置“突出显示”项及其子链接与下拉列表 1 和 2 链接不同的链接文本(和悬停)的样式。我还希望能够以不同于 Highli
我对导航栏中的下拉菜单有疑问。对于普通的导航链接(无下拉菜单),我将菜单文本放在 H3 中,但是当我尝试对下 zipper 接执行相同操作时,箭头不在标题旁边,而是在标题下方。我决定用 span 替换
我是一名优秀的程序员,十分优秀!