/ / NodeJS и Primus.io WebSocket отваряне на ръкостискане бе отменено - node.js, proxy, websocket, primus

NodeJS и Primus.io отварянето на ръкопис на WebSocket бе отменено - node.js, proxy, websocket, primus

Опитвам се да се свържа с 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

Може ли някой да помогне?

Благодаря!

Отговори:

0 за отговор № 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, в правилния формат.