前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >翻译:SockJS-node文档(一)

翻译:SockJS-node文档(一)

作者头像
寒月十八
发布2022-03-30 15:35:39
1.8K0
发布2022-03-30 15:35:39
举报

什么是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);
    });
});
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-12-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SockJS-node server
    • SockJS-node API
      • Server class
      • Server instance
      • Connection instance
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档