Javascript 仅子域上的Websocket服务器

Javascript 仅子域上的Websocket服务器,javascript,node.js,websocket,Javascript,Node.js,Websocket,我试图在子域上有一个websocket服务器,以便客户端指向类似“ws://ws.mydomain.com”的内容 我使用子域模块来处理对子域的正常get请求,但不确定如何合并这两个请求。关于我如何处理这个问题有什么想法吗 WebSocketServer可以获取一个服务器对象,但无法找到它 var WebSocketServer = require('ws').Server var express = require('express'); var subdomain = require('su

我试图在子域上有一个websocket服务器,以便客户端指向类似“ws://ws.mydomain.com”的内容

我使用子域模块来处理对子域的正常get请求,但不确定如何合并这两个请求。关于我如何处理这个问题有什么想法吗

WebSocketServer可以获取一个服务器对象,但无法找到它

var WebSocketServer = require('ws').Server
var express = require('express');
var subdomain = require('subdomain');
var app = express();
var wss = new WebSocketServer({port: 8081, server: http.Server});
app.use(subdomain({ base: 'mydomain.com', removeWWW: true}));

wss.on('connection', function(ws){
  console.log('a connection!');
});

app.get('/subdomain/unrelatedsub', function(req, res){
  res.send("hello unrelated subdomain page");
});

app.listen(80);
WebSocket协议试图解决现有协议的目标 现有HTTP上下文中的双向HTTP技术 基础设施因此,它被设计为在HTTP端口80上工作 和443以及支持HTTP代理和中介,甚至 如果这意味着特定于当前 环境

Express 3将应用程序公开为请求处理程序,您必须先实例化一个http.Server,然后将Express应用程序传递到其中,然后设置套接字,因为ws://协议可以共享您侦听的http端口,就像wss://可以共享HTTPS端口一样

尝试与此更接近的方法,如果您没有响应,我将在有机会时进行测试:

var WebSocketServer = require('ws').Server
var express = require('express');
var http = require('http')
var app = express();

app.use(subdomain({ base: 'mydomain.com', removeWWW: true}));

var server = http.createServer(app);
server.listen(8080);

var wss = new WebSocketServer({server: server});

wss.on('connection', function(ws){
  console.log('a connection!');
});

app.get('/subdomain/unrelatedsub', function(req, res){
  res.send("hello unrelated subdomain page");
});

在您的代码示例中看不到特定于子域的websocket服务器。我的代码基于您的初始发布,但我们使用app.usesubdomain,然后通过将“app”传递到http.createServer,然后为新的WebSocketServer构造函数提供服务器来创建服务器。这一次我们运气不好。决定在nodejs之上使用nginx反向代理服务器