2013-04-18 28 views
20

Çalışan bir Jetty 8 sunucusuna sahibim (yakında websockets ile). Bir ajax çağrısı ile sunucuya bazı verileri göndermek istiyorsanızWebSocket'ı geçerli sunucuya nasıl yönlendirilir

, ben bunu yapabilirsiniz:

$.ajax({ url: "ajax?a=getSomeData" }); 

Bu senaryoda, ben 192.168.1.100 benim sunucusuna bağlanmak eğer gerçek url nerede olacak Verileri alın, 192.168.1.100/ajax?a=getSomeData olacak, ancak 192.168.1.200 aynı yazılımı çalıştıran başka bir sunucuya bağlanırsa, URL 192.168.1.200/ajax?a=getSomeData olacaktır. Ben Yuvalarının kullanarak aynı şeyi başarmak istiyorsanız

Ama bunu nasıl bulamıyor:

var socket = new WebSocket('ws://www.example.com/'); 

Çalışır. Ama göreceli bir url gibi bir şey istiyorum: - ajax isteği gibi - Yani

var socket = new WebSocket('ws://sockets?a=getSomeData'); 

ben 192.168.1.100 benim sunucuya bağlanırken olsaydı, url 192.168.1.100/sockets?a=getSomeData olacak ve ben 192.168.1.200 bağlanmak eğer, url olacak 192.168.1.200/sockets?a=getSomeData olmalıdır.

Bunu nasıl yapabilirim?

cevap

35

Sadece URL'yi kendiniz oluşturmak:

var socket = new WebSocket("ws://" + location.host + "/whatever"); 

location nesne window nesnesinin bir özelliği olduğunu ve bu nedenle kolayca görüntülenebilir.

Yalnızca bağlantı noktası olmayan ana bilgisayarı almak için, bunun yerine location.hostname kullanın. Websocket sunucusu, örneğin başka bir bağlantı noktasında dinler. (http kullanılır)

(https kullanıldığında) Ayrıca wss olarak bağlanması gerekiyorsa bilmek location.protocol inceleyebilir veya ws.

+12

Değiştirmeniz gerekiyorsa, bağlantı noktasını 'location.host' kapalı olarak kesinleştirdiğinizden emin olun! 'location.hostname' yerine çalışır. – jocull

+0

Merhaba Yardımcı olabilir misiniz? Web sitemde bir anlık mesajlaşma tesisi eklemek istiyorum. alanım paylaşılan bir barındırma üzerindedir ve bana alan adımda bir websocket veremediklerini söylediler. Amacım için bağlanmak için ücretsiz olarak kullanılabilir web soket urls var mı merak ediyorum? web yuvaları için gerçekten yeni im, bu yüzden hala nasıl çalıştığından emin değilim. Teşekkürler – Sarah

İlgili konular