我有一个使用网络套接字的工作聊天应用程序。我想更进一步,在我的连接上启用加密,但是当我用 https 服务器切换 http 服务器时,我的连接开始失败。
我已经生成了一个在我的所有网站上使用的自签名证书(在同一 TLD 下,这意味着它是通配符证书)。我可以确认这是一个有效的证书,所以问题不应该存在。
这就是有效的(未加密)
var webSocketServer = require('websocket').server;
var http = require('http');
var server = http.createServer(function() {});
server.listen(webSocketsServerPort, function () {
log("system", "Server is listening on port " + webSocketsServerPort);
});
var wsServer = new webSocketServer({
httpServer: server
});
使用这个我现在可以连接到ws://my.domain:port
.
这就是做的not work
var webSocketServer = require('websocket').server;
var http = require('https');
var fs = require('fs');
var server = http.createServer({
key: fs.readFileSync("path/to/host.key"),
cert: fs.readFileSync("path/to/host.pem")
});
server.listen(webSocketsServerPort, function () {
log("system", "Server is listening on port " + webSocketsServerPort);
});
var wsServer = new webSocketServer({
httpServer: server
});
使用此代码,服务器也会启动,我看到日志消息“服务器正在侦听..”,但是当我尝试连接时wss://my.domain:port
无法建立连接。
我在浏览器中为证书添加了一个例外,因为我的客户端页面和 websocket 服务器地址位于相同的 tld 和子域下。
可能是什么问题呢?