2013-04-12 10 views
6

Bir tarayıcıda javascript'in elle yazılmış sunucumla konuşmasına izin vermek için websockify'yi kullanmaya çalışıyorum. Chrome ve Firefox'un en son sürümlerini kullanırken, aşağıdaki hata iletisini websockify'den ediniyorum: İstemcinin 'ikili' veya 'base64' protokolünü desteklemesi gerekirWebsockify hatası "İstemci 'ikili' veya 'base64' protokolünü desteklemelidir"

Kodu inceledikten sonra, websockify'nin bu iletiyi ilettiğini belirledim ve bu protokollerin her ikisi de istemciden alınan Sec-Websocket-Protocol başlığı altında görünmediğinde soketi kapatır. Chrome tarafından iletilen ham verilere baktığımda, bu üstbilgiyi bile göndermiyor. Bu, Chrome veya websockify ile ilgili bir sorun mu yoksa javascript'imde websocket'u açarken bazı bilgileri veremem mi? Yoksa başka bir açıklaması var mı?

+0

Daha fazla okuma yaptıktan sonra bağlantıyı güvenli bir websocket'e yükselttim (Bazı başlıklar yol boyunca düşüyorsa.) Başlangıçta krom farklı bir hataya neden oluyordu ancak kromu kendim imzalı sertifikamı kabul etmeye zorladım. hala hem firefox hem de kromda bir kare. – flancor

cevap

8

Sen nesne yapıcı bir parçası olarak protokol listesi sağlamak gerekir:

var ws = new WebSocket(uri, ['binary', 'base64']); 

Eğer o zaman bu sizin için idare edecek websock.js kütüphanesi websockify birlikte kullanın. Ancak, websock.js'nin standart WebSocket API'sini değil, akış odaklı bir API sağladığını unutmayın. Websockify'e bir ham WebSocket bağlantısı kullansanız bile, normal TCP'nin bir mesaj kavramı olmadığı için mesaj yeniden yapılandırması yapmanız gerekeceğini unutmayın, bu nedenle, mesajdan gelen mesajlar temel olarak "keyfi" olacaktır.

+0

Çok teşekkür ederim. Görünüşe göre saatler süren araştırmalar beni bu iki önemli bilgi parçasına götürmeyi başaramadı. – flancor

+0

Dokümantasyon (MDN ve webplatform.org'da) bundan hiç bahsetmiyor. – CpnCrunch

+0

@CpnCrunch, yapıcıya ikinci bağımsız değişken ya alt protokolü veya tercih sırasına göre bir alt protokol dizisini gösteren tek bir dizedir. 'Ikili' ve 'temel64' değerleri websockify'ye özgüdür. WebSocket arabiriminin W3C tanımına bakın: http://www.w3.org/TR/websockets/#the-websocket-interface – kanaka

İlgili konular