博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
翻译:SockJS-node文档(一)
阅读量:6376 次
发布时间:2019-06-23

本文共 2415 字,大约阅读时间需要 8 分钟。

什么是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');

SockJS-node API

SockJS的API是建立在NodeJS的通用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实例是一个 ,可以执行以下事件

Event: connection (connection)

  成功建立于客户端的连接

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

 

Connection instance

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

 

属性: 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);    });});

 

 

转载地址:http://ektqa.baihongyu.com/

你可能感兴趣的文章
RabbitMQ的应用场景以及基本原理介绍(转)
查看>>
Nginx:413 Request Entity Too Large解决
查看>>
飘雪代码2枚
查看>>
linux crontab详解
查看>>
HTTP 请求头 WIKI 地址
查看>>
ASP.NET CORE中使用Cookie身份认证
查看>>
Dynamics CRM 2016 Web API 消息列表
查看>>
项目微管理3 - 面试
查看>>
RecyclerView的点击事件
查看>>
友元函数和友元类
查看>>
SpringMVC中CRUD实例
查看>>
java-jmx使用
查看>>
Win8Metro(C#)数字图像处理--2.15图像霓虹效果
查看>>
Expo大作战(十七)--expo结合哨兵(sentry)进行错误异常记录
查看>>
vue.js入门学习
查看>>
第8件事 3步打造产品的独特气质
查看>>
debug-stripped.ap_' specified for property 'resourceFile' does not exist
查看>>
利用MapReduce计算平均数
查看>>
scala-05-map映射
查看>>
Spring Boot - how to configure port
查看>>