zoukankan      html  css  js  c++  java
  • 翻译: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);
        });
    });
  • 相关阅读:
    VIVADO固化
    Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别
    STM32时钟
    STlink/v2中SWD模式连线方式
    搭载M33内核,支持最新蓝牙5.1,晚到的DA1469x生正逢时
    超全国内外蓝牙芯片原厂总结(含芯片型号)
    芯片封装类型大全
    国务院办公厅关于2012年部分节假日安排的通知
    美国摇滚乐队Metro致敬黄家驹,全粤语翻唱Beyond经典《海阔天空》
    国务院办公厅发布2010年部分节假日安排通知
  • 原文地址:https://www.cnblogs.com/ihardcoder/p/3499587.html
Copyright © 2011-2022 走看看