【发布时间】:2020-05-25 07:46:31
【问题描述】:
所以我的主网页 example.com 是通过 cloudflare 运行的,并且拥有来自 Origin -> CF Edge(原始证书)的边缘证书和边缘证书 CF Edge -> Client。我正在通过使用子域 dt.example.com 为我的 websocket 绕过这个,它使用 cloudflare 尽管使用此链接解析源服务器地址而不是 cloudflare 边缘服务器地址(我发现它为我解决了一些问题,或者它可能是使用这种方法会适得其反?)。无论如何,我正在使用免费的 ssl 证书来保护 websockets -
'use strict';
var https = require('https');
var fs= require('fs');
var express = require('express');
var WebSocket = require('ws');
var server = https.createServer({
cert: fs.readFileSync('../ssl/wss/new/certificate.crt'),
key: fs.readFileSync('../ssl/wss/new/private.pem'),
ca: fs.readFileSync('../ssl/wss/new/ca_bundle.crt')
});
const wss = new WebSocket.Server({server});
wss.on('connection', function connection (ws) {
ws.on('message', function message (msg) {
console.log(msg);
});
});
server.listen(58443, function listening () {
const ws = new WebSocket('wss://dt.example.com:58443', {
rejectUnauthorized: false
});
ws.on('open', function open () {
ws.send('Workin baby');
});
});
-并且使用 chrome 的 websocket 客户端插件允许我连接到套接字,但是我不能在 example.com/webpage 上使用以下代码:
var ws = new window.WebSocket('wss://dt.example.com:58443/', {
rejectUnauthorized: false
});
ws.on('open', function open () {
ws.send('What\'s crackin?');
});
虽然在浏览器 (Chrome) 中执行客户端脚本时它会退出并出现以下错误 Uncaught DOMException: Failed to construct 'WebSocket': The subprotocol '[object Object]' is invalid. (on line 1)
【问题讨论】:
标签: javascript node.js websocket