Is there a Telnet library for JavaScript?
Asked Answered
M

4

20

We have a network camera. It has an HTTP server to provides the current image. There is also a Telnet interface for controlling the camera (i.e. trigger, focus, etc.). I would like to add an HTML page to the camera that would provide a simple interface (we already have client software we write). I can "GET" the image and display that, but I would also like to have controls that use the Telnet interface to control the camera. So a button might have JavaScript code behind it that connects to the camera via Telnet (logs in) and issues the command to trigger the camera.

I know that JavaScript/browsers support connecting to the same host via XMLHttpRequest. In this case I would be looking to open a socket on port 23 and send text. I also know that I can do this through Flash, Java, or some other technology, but I would prefer to use JavaScript only. If that is possible.

Mckie answered 18/1, 2011 at 15:4 Comment(0)
P
6

Thomaschaaf is correct, while HTML5 introduces websockets you'll find they still require special server support as they post HTTP style information upon opening the socket:

JS/HTML5 WebSocket: Connect without HTTP call

The best way, currently, to have true sockets is to either

  • use a flash or Java component on the webpage that does the actual socket work.
  • use a proxy server with websockets that can handle the additional protocol overhead of websockets and connect to the real tcp/ip port with plain sockets.

The jsterm example Matt linked does the latter, and if your webcans are behind a firewall it will not work in your situation without also implementing another server.

There are libraries that implement the first method, two are linked here for convenience, many others can be found using a search engine:

http://stephengware.com/proj/javasocketbridge/ (Java)

http://matthaynes.net/blog/2008/07/17/socketbridge-flash-javascript-socket-bridge/ (Flash)

Pastiness answered 3/2, 2011 at 15:35 Comment(0)
O
5

jsTerm is an HTML5 implementation of a Telnet client.

You'll need a browser that supports HTML5 WebSockets. WebSockets is the only method of doing non-HTTP requests with pure JavaScript.

Oceanography answered 18/1, 2011 at 15:17 Comment(3)
Besides a browser that supports HTML5 WebSockets, you'll also need a Node.js server to be the telnet proxy.Ralaigh
Broken link to jsTerm.Younger
@KonradGajewski I edited the answer to refer to the GitHub repo instead. But the project seems unfortunately abandoned by now.Coridon
T
4

Currently there is no way to do socket connections with JavaScript only.

But what you are searching for is a socket connection ;)

https://developer.mozilla.org/en/XML_Extras

Theatrics answered 18/1, 2011 at 15:7 Comment(1)
Sorry, the page /en-US/XML_Extras could not be found.Empurple
C
1

If I interpret the question liberally as "is there a remote connectivity library for Javascript", then the answer is yes (quoting from https://xtermjs.org/):

I've tried WebSSH2 with node.js briefly, it worked for me - I managed to connect to a Linux-based server with it.

(I know this probably doesn't help the OP but this is a 7-year old question anyway. Maybe it helps others who are needing an answer to a similar problem.)

Coridon answered 5/11, 2018 at 20:45 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.