【问题标题】:NodeJS + HTML5 + Telnet = isitpossible?NodeJS + HTML5 + Telnet = 有可能吗?
【发布时间】:2012-11-06 13:32:04
【问题描述】:

我有这个项目用于我目前正在学习的课程。在这里:

  • 用于 Telnet 的 WebPage 客户端不在标准端口上,能够选择端口和连接

我的机器上有 telnet 服务器,正在等待连接。

所以我的想法是在专用机器上设置一个带有 express 服务器的 nodeJS。这将通过 telnet 处理连接并为客户端托管一个页面,该页面将使用 socket.io 与服务器端交换信息。

但由于我是此类技术的新手(电信专业的学生),我想知道这是否可能。我发现了类似的东西 - Peter Nitsch 的 jsterm.com,但我发现代码中有一些巨大的差距,并且演示并没有真正起作用,所以我不知道它是否真的有效。有人试过吗?

我的另一个问题是 - 当我通过 websockets 向 nodeJS 服务器发送信息时,这对我来说似乎可以实现,我该如何处理这些信息?我是否只是设置了另一个 websocket 来将我从客户端 websocket 获得的相同数据直接传递到 telnet 端口?

套接字可以直接连接到特定端口,而另一端没有任何 websocket 等待吗?

如果我的想法是错误的,谁能帮助我 - 也许存在一些不错的解决方案 - 例如,我正在考虑 Anyterm,但我发现它需要一个 apache 服务器并运行完全不同的技术......

【问题讨论】:

  • 是的,是可行的。数据流是节点服务器必须在浏览器中的终端仿真器询问时建立与 telnet 服务器的连接,然后通过 Web 套接字代理数据进出它。
  • 为什么是-1?至少发表评论说你为什么投反对票。 +1
  • 所以在回调函数中通过 websocket 将消息发送到我的 telnet 端口是可行的,每次来自我的客户端的 websocket 收到消息时都会运行该回调函数?服务器从客户端获取消息,通过 websocket 将其传递到 telnet 端口 - 这是我现在的想法 :) 我将尝试运行一些测试,但我已经看到我需要像 websockify 这样的东西来从我的消息中删除不相关的数据只是为了有一个清晰的二进制消息,我的 telnet 服务器可以理解...

标签: html node.js express websocket telnet


【解决方案1】:

需要明确的是,WebSocket 连接不是原始 TCP 套接字连接。它们在每个数据包中都有额外的标头信息,浏览器到服务器的数据使用正在运行的 XOR 等进行屏蔽。

为了让浏览器与普通的 TCP 服务器(例如 telnet 服务器)通信,您需要某种桥接服务。碰巧这样的事情已经存在。 websockify 是一个接受 WebSocket 连接并将它们桥接到原始 TCP 服务器的服务器。

事实上,websockify 项目已经包含一个工作的 telnet 客户端作为示例应用程序。但是,请注意 websockify 的一个限制(出于安全原因)是客户端无法选择任意服务器地址/端口来连接。目标地址必须是预定义的,可以是在 websockify 的命令行中指定的单个目标,也可以是配置文件中指定的多个目标(并通过 WebSocket 连接字符串中的标记选择)。

websockify 有多种不同语言(python、C、node、ruby、Clojure)的实现,但目前只有 python 版本通过配置文件支持多个目标。

免责声明:我创建了websockify

【讨论】:

  • 是的,您的项目似乎是一个甜蜜的软解决方案。不幸的是,在我的应用程序中,客户端必须能够自己决定要从设备使用的端口列表中选择哪个端口。例如,是否可以根据客户端应用程序在简单的 Web GUI 中选择的端口创建一组 websocks,将 nodeJS 服务器连接到不同的(可能是预定义的)telnet 端口?如果可能的话,那么我实际上有一个完整的设置......我只是决定坚持使用 js 并使其尽可能简单。无论如何,谢谢你的努力,很酷你不忽视新手:)
  • 我想出了另一种方法:每次新客户端通过websocket连接到节点时,节点都会在命令行中设置一个子进程“telnet地址端口”作为子进程。既然几乎每个操作系统都有一个 telnet 客户端,为什么不使用它呢?一切对我来说都很好。只有一件坏事——我猜 Windows 不知道标准输入和标准输出是什么,我不能在那里使用 child_processes(但它在 Ubuntu 12.04 上工作得很好)。无论如何,剩下的最后一件事就是创建一个漂亮的基于网站的终端,代码将准备好发布在 Github 上。
  • @kanaka - 这是你的意思的例子吗? github.com/novnc/websockify/tree/…
  • @StingyJack 是的。多年来没有人碰过这个例子,所以它现在可能已经被打破了,但是,它曾经是有效的,所以它应该是一个合理的起点。
  • @kanaka - 没关系,我只是想确认我正在寻找正确的东西
猜你喜欢
  • 2022-01-03
  • 2012-07-17
  • 2014-09-05
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 2013-11-20
  • 2012-08-07
相关资源
最近更新 更多