Опитвам се да се свържа с 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, в правилния формат.