• 翻译:SockJS-node文档(一)


    什么是SockJS?

     SockJS是一个提供Websocket通信的JavaScript库,目的是实现在浏览器与服务器之间低延迟、全双工、跨域通信,它提供跨浏览器的统一API,即使不支持HTML5 Websocket的浏览器也能通过SockJS实现Websocket通信,SockJS支持不同的后端脚本语音,包括NodeJS、Python、Java等,这里主要介绍SockJS-node,即支持NodeJS的版本。

    SockJS-node server

    SockJS-node 是浏览器端运行的SockJS-client库对应的服务端,由CoffeeScript编写。

    安装sockjs-node,首先确认你的机器已经安装NodeJS,然后执行:

    npm install sockjs

    你或许有安全方面的考虑,可以安装rbytes库,SockJS将在rbytes可用时用到它,当然,如果不安装rbytes或安装失败,也不会影响SockJS的正常使用:

    npm install rbytes

    下列的语句将创建一个简单的SockJS服务端:

    var http = require('http');
    var sockjs = require('sockjs');
    
    var echo = sockjs.createServer();
    echo.on('connection', function(conn) {
        conn.on('data', function(message) {
            conn.write(message);
        });
        conn.on('close', function() {});
    });
    
    var server = http.createServer();
    echo.installHandlers(server, {prefix:'/echo'});
    server.listen(9999, '0.0.0.0');

    点击此处可访问完整的example代码

    SockJS-node API

    SockJS的API是建立在NodeJS的通用API之上,如 Steams APIHttp.Server API

    Server class

    与NodeJS的http.createServer模块类似,SockJS通过以下语句创建一个Server类:

    var sockjs_server = sockjs.createServer(options);

    options是一个散列数组,可以包含以下属性:

    sockjs_url (string, required)

      不支持跨域通信的传输协议通过使用iframe技巧来实现跨域处理。浏览器从外部域SockJS server获取一个简单的页面,然后置于一个不可见额iframe里,在这个iframe中运行的code不会有跨域的问题。

    prefix (string)

    response_limit (integer)

    websocket (boolean)

    jsessionid (boolean or function)

    log (function(severity, message))

    heartbeat_delay (milliseconds)

    disconnect_delay (milliseconds)

    Server instance

    声明SockJS Server的实例,便可与http.Server的实例耦合

    var http_server = http.createServer();
    sockjs_server.installHandlers(http_server, options);
    http_server.listen(...);

    其中的option可以覆盖创建Server实例时的option

    Server实例是一个 EventEmitter,可以执行以下事件

    Event: connection (connection)

      成功建立于客户端的连接

     不在prefix定义的path之下的所有http请求将不会被SockJS Server应答,并且会被转移至之前注册的handler处理,所以,在执行installhandlers之前,必须声明自定义的http handler

    Connection instance

    connection实例支持NodeJS的Steams API,包括以下方法和属性:

    属性: readable (boolean)
    属性: writable (boolean)
    属性: remoteAddress (string)
    属性: remotePort (number)
    属性: address (object)
    属性: headers (object)
    属性: url (string)
    属性: pathname (string)
    属性: prefix (string)
    属性: protocol (string)
    属性: readyState (integer)
    write(message)
    close([code], [reason])
    end()

    Connection实例可执行以下事件(Events):

    事件: data (message)
    事件: close ()

    example:

    sockjs_server.on('connection', function(conn) {
        console.log('connection' + conn);
        conn.on('close', function() {
            console.log('close ' + conn);
        });
        conn.on('data', function(message) {
            console.log('message ' + conn,
                        message);
        });
    });
  • 相关阅读:
    SqlServer2005自动备份
    在Win7下运行使用BDE的程序
    Hibernate连接SqlServer时的小问题
    使用Delphi在SqlServer中对日期的设置
    Flex中连接J2ee的一个小问题
    np使用创建图像 霍夫圆检测 video操作,显示canny边缘
    Web.config的配置
    SQL 进制间如何转换
    jQuery 设置和获取HTML,文本和值
    通过LINQ to XML生成 XML
  • 原文地址:https://www.cnblogs.com/ihardcoder/p/3499587.html
Copyright © 2020-2023  润新知