【发布时间】:2016-08-08 06:33:12
【问题描述】:
我需要能够在应用程序级别平衡 websocket。假设根据我收到的消息转发 websocket 请求,在代理上对其进行解码,然后使用该数据使用某种逻辑发送到另一个套接字服务器。
但我无法做到这一点。这是我编写并尝试这样做的初始代码。这是服务器
var http = require('http');
var httpProxy = require('http-proxy');
var WebSocket = require('ws');
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: 8080 });
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
ws.send('something');
});
var proxy = httpProxy.createServer({target: 'ws://localhost:8080', ws:true});
var server = httpProxy.createServer(function(req, res) {
//SOME LOGIC HERE TO PARSE WS DATA AND SEND TO WS SERVER
proxy.ws(req, res, { target: 'ws://localhost:8080'});
}).listen(8014);
客户
var http = require('http');
var httpProxy = require('http-proxy');
var WebSocket = require('ws');
var ws = new WebSocket('ws://localhost:8014/');
ws.on('open', function () {
ws.send("CLIENT");
});
ws.on('message', function (msg) {
console.log(msg);
});
【问题讨论】:
-
可能duplicate?可能对你有帮助
-
@NiCkNewman 我可以很好地代理,但我需要根据接收到的数据进行平衡,而不会实际中断套接字连接。
标签: node.js web-services sockets proxy node-http-proxy