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);
        });
    });
  • 相关阅读:
    elasticsearch 相关命令
    Ubuntu server 修改系统时区
    js-eval运算符
    js-带操作的赋值表达式
    MVC模型绑定
    MVC部分视图的使用
    C#面试题-递归
    C#校验手机端或客户端
    AngularJs 中使用OpenLayer例子,手机端地图加载不显示问题
    C#后端调用WebApi地址
  • 原文地址:https://www.cnblogs.com/ihardcoder/p/3499587.html
Copyright © 2011-2022 走看看