Nginx配置:失败:WebSocket握手期间出错:意外的响应代码:400

时间:2019-08-08 17:59:39

标签: c# websocket nginx-config jwilder-nginx-proxy

我正在努力使用nginx和websockets。

我的客户端是Javascript,我在服务器代码中使用Fleck。

所以:我的JS:

var ws;
var url = "wss://192.168.0.12:8080/";

$(document).ready(function () {

function Connect() {
    try {
        $("#lblConnectionStatus").html("Reconnecting...");
        if (ws instanceof WebSocket) {
            ws.close();
        }
        ws = new WebSocket(url);
        ws.binaryType = "arraybuffer";
        ws.onerror = function (e) {
            $("#divInternalMessangingStatus").html("Internal Messaging Error: " + e.message);
        };
        ws.onclose = function () {
            $("#divInternalMessangingStatus").html("Internal Messaging Closed:");
            Connect();
        };
        ws.onopen = function () {
            $("#divInternalMessangingStatus").html("Client connected");

        };
        ws.onmessage = function (e) {
            $("#divInternalMessangingStatus").html(e.data);
        };
    } catch (err) {
        $("#divInternalMessangingStatus").html(err);
    }
}

请注意,我现在已经硬编码了设备所在的IP地址。

我的C#代码:

var server = new WebSocketServer("wss://0.0.0.0:8080/");

server.Start(
    socket =>
    {
            socket.OnOpen = () =>
            {
            };
            socket.OnClose = () =>
            {
            };
            socket.OnMessage = message =>
            {
            }
    });

和我的nginx配置:

    server {
listen 8080;
server_name ws.serverlab.ca;

listen               443;
ssl                  on;
ssl_certificate      /home/pi/web/localhost.crt;
ssl_certificate_key  /home/pi/web/localhost.key;
ssl_ciphers          HIGH:!aNULL:!MD5;
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;



location / {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $host;
  proxy_pass http://ws-backend;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
}
}

upstream ws-backend {
 # enable sticky session based on IP
ip_hash;

server 192.168.0.12:8080;
#  server server02:3000;
#  server server03:3000;

}

0 个答案:

没有答案