#WebSocket
TSW已内置
WebSocket
只需在config配置文件里实现
config.wsRouter
//需实现的function
exports.onConnection = function(ws){//WebSocket连接建立的回调函数
//ws.send('xxx');
//ws.close();
};
exports.onMessage = function(ws, message) {//收到消息的回调函数
};
exports.onClose = function(ws, code, reason) {//WebSocket连接关闭时的处理函数
};
exports.onError = function(ws, err) {//WebSocket连接出错时的处理函数
};
##ws对象属性详解
ws.upgradeReq
-- node http连接中的request
对象upgradeReq
-- object
ws
扩展属性upgradeReq.GET
-- object
WebSocket
请求get
参数upgradeReq.headers
-- object
WebSocket
请求cookie
对象upgradeReq.REQUEST
-- object
WebSocket
请求url
解析后的对象upgradeReq.REQUEST.pathname
-- string
WebSocket
请求的pathname
ws.readyState
-- number
WebSocket
连接的状态,值为数字,只有readyState
等于1
时才能send消息0
-- number
WebSocket
连接还没有open1
-- number
WebSocket
连接已经open,并且可以收发消息了2
-- number
WebSocket
连接关闭中3
-- number
WebSocket
连接已关闭ws.send('xxx')
-- 发送消息,支持二进制数据ws.close()
-- 关闭WebSocket
连接http有加密通信https,同样,ws也有加密通信wss,无需单独部署,直接复用https证书
每个woker
都监听了一个私有port,从global.TSW_HTTP_WORKER_PORT
得到,利用私有port转发消息
如果TSW前面有类
nginx
接入层,需要在转发时保持Upgrade
透传
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
##浏览器端连接demo
const ws = new WebSocket('wss://tswjs.org/hello/world?aaa=xxx');
ws.onopen = function() {//连接建立
ws.send('xxx');
ws.close();
};
ws.onmessage = function(message) {};
ws.onclose = function() {};
TSW中的WebSocket默认支持跨域请求,如果需要拒绝跨域请求,需要在config配置文件里实现
config.allowWebSocketOriginHost