Открытие NodeJS и Primus.io WebSocket было отменено
Я пытаюсь связаться с Primus с помощью веб-сокетов:
WebSocket connection to 'wss://dev.dylaan.nl/primus/?_primuscb=1417355606238-6' failed: WebSocket opening handshake was canceled
Мой скрипт NodeJS:
var express = require("express")
, fs = require("fs")
, path = require("path")
, moment = require("moment")
, Primus = require("primus")
, compression = require("compression")
, app = express()
, http = require("http").createServer(app)
, jsp = require("uglify-js").parser
, pro = require("uglify-js").uglify
, primus = new Primus(http, { transformer: "websockets" });
Клиент:
var primus = new Primus("wss://dev.dylaan.nl")
Я новичок в такого рода вещах, но я не знаю, что сейчас не так, я прочитал документы от Primus, я также пытался Google, но я могу найти ответ.
Когда я перехожу на протокол к ws
вместо wss
Я получаю ошибку
Error during WebSocket handshake: Unexpected response code: 426
http 426 may mean that you are trying to connect with an unsupported websocket protocol version
Also, if you are connecting through a proxy, the proxy may remove the "upgrade" header from the request since it is marked as "connection" header. Switch to WSS:// to prevent that.
@ Неожиданный код ответа: 426 с клиентом PhanthomJS Websocket/ROSLIB
Ну, мой VPS находится за обратным прокси-сервером ngnix. У меня нет доступа к этому. Вот почему я использую wss.
Демо: http://dev.dylaan.nl/play
Может кто-нибудь помочь?
Спасибо!
1 ответ
Мне кажется, что вы неправильно настроили свой сервер nginx и что он блокирует соединения WebSocket, вызывая ошибку 400, которая будет возвращена. См. Http://nginx.com/blog/websocket-nginx/, чтобы узнать, как настроить сервер для подключения через веб-сокет.
Если вы не можете заставить свой хост / vps проверить, разрешены ли соединения WebSocket, вы можете полностью отключить WebSockets в Primus, предоставив опцию { websocket: false }
в коде клиента:
new Primus("http://dev.dylaan.nl", { websocket: false })
Я также заметил, что вы использовали wss/ws
вместо http
который требуется Primus, мы автоматически перепишем URL на основе HTTP в правильный формат.