是Socket.IO开发用于服务器的NodeJS应用程序客户端必须?(Is Socket.IO a

2019-09-23 23:25发布

我是新来的NodeJS就觉得很有意思。 我并没有太大问题,建立与服务器的NodeJS。 但是,当我去开发一个Web浏览器的客户端,我来了解Socket.IO。 但我很困惑这个问题。 我们可以开发不使用的服务器的NodeJS网络Socket.IOS客户端应用程序?

是否有在的WebSockets的NodeJS没有Socket.IO支持?

Answer 1:

这个问题是老了,但以备将来参考。

Socket.IO是有名的,节点流https://github.com/substack/stream-handbook应该是有趣的你。

我个人这样做对我自己的项目:

http://kenokabe.github.io/MarkdownLive/

我写使用降价的东西,需要一个流媒体预览,所以我创造了我自己。 该预览屏幕是一个浏览器的HTML页面,和HTML内容渲染和流媒体的方式增量更新。

这种技术通常被称为RPC(remote procedure call) 。 Socket.IO是熟悉的很多人,你可以找到在网络上丰富的资源,所以好东西开始。

不过,我个人再也不会因为它是一个巨大的图书馆只是节点和浏览器之间做RPC使用它,尤其是当你知道你不需要任何回退给其他比的WebSocket。

更简洁和复杂的(我认为),无缝的方式在这里做RPC是使用

dnode或RPC-流与Browserify 。

证明:下面是我自己的项目的客户端(浏览器)的代码: http://kenokabe.github.io/MarkdownLive/

https://github.com/kenokabe/MarkdownLive/blob/master/www/js/index.js

(function() //-----
  {
    "use strict";

    $(document)
      .ready(function()
      { //--------------------------
        $('#streamDIV')
          .html('<h1>MarkdownLive</h1><h3>Markdown Streaming Live View for SublimeText3</h3><br><h4><strong>Open</strong> <br><br>.md<br>.markdown<br>.mdown<br>.mkdn<br>.mkd<br>.mdwn<br>.mdtxt<br>.mdtext<br>.text<br>.txt</h4>');
        var through = require('through');

        var stream = require('shoe')('/stream')
          .pipe(through(function(data)
          {
            $('#streamDIV')
              .html(data);
          }));
        //-------------------------
      });

  }());

如何使用Node.js流正常,有可能写出简洁的声明性编程或FRP方式的服务器 - 客户端RPC代码。

有一个在node.js中没有原生的WebSocket实现的网络套接字服务器端实施的NodeJS和Socket.IO是基于WS 。

网页套接字层

ws或袜子JS或其他人。

流层

https://github.com/maxogden/websocket-stream为WS

https://github.com/NodeGuy/WebSocketStream为WS

https://github.com/kenokabe/WebSocketStreamPlus (我基于NodeGuy的一个工作)

https://github.com/substack/shoe的袜子JS

RPC层

https://github.com/substack/dnode

https://github.com/dominictarr/rpc-stream



Answer 2:

是的,插座-io的是可以与节点JS(和其他依赖)中使用的方案,但在节点使用插座-io的构建Web应用程序时,它不是强制性的。 普通的HTTP请求会做得很好。 您还可以使用网络插座,节点不使用插座-10。



Answer 3:

当然,你可以用它socket.io之外。 它的问世为节点,只需一个模块在故宫 。

例如,它是很常见的使用节点作为一个Web / HTTP服务器-看快递 。 这是一个网络服务器,非常普遍,不一定是socket.io应用。

Socket.io是好的,您希望浏览器/客户端将与通过HTML5网页套接字服务器的套接字场景。 在这种情况下,服务器可以调用回客户端,并通过数据备份(而不是轮询) - 基于像另一个客户端调用和改变数据在服务器上的一些事件calbacks。 一个聊天应用是典型的例子。

你看socket.io与节点多沿提到这样的原因是因为节点是一个网络服务器,这是很轻的重量和速度快,因此,有必要和接近实时的网络情况进行了优化。



文章来源: Is Socket.IO a must in developing client apps for NodeJS servers?