2015-05-13 21 views
5

Müşterilerin bağlanmasını bekleyen basit bir WebSocket uygulaması yapacağım. Müşteriler Android kullanıcıları olacak ve uygulamanın kendisi iki halk için basit bir sohbet. Yani Android uygulaması için WebSocket adresini bilmem gerekiyor (ws: // veya wss: // ile başlar). Zaten nodejs'i kurduğum bazı web sitem var. Ama birkaç gün sonra neler olup bittiğini ve bir şeyin nasıl işlediğini tamamladım. Nodejs'in herhangi bir WebSocket mesajını yakaladığını görmek bile memnun olurum.Basit WebSocket uygulaması ile NodeJS

Nodejs ve socket.io ile ilgili bazı kılavuzları okudum ve yine bu ws: // adresini nereden alacağımı bilmiyorum ve bir şekilde çalışmasını sağlarım. socket.io chat manual dan Örneğin

, elimizde:

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.get('/', function(req, res){ 
    res.sendfile('index.html'); 
}); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

zaten basit WebSocket uygulama mı? İstediğim ws: // bu durumda adres? Belki de o kodları sunucuya yüklemem ve ws: //mydomain.com: 3000 sorgularını göndermem gerekir mi?

cevap

4

Sunucuda socket.io kitaplığını kullanıyorsanız, istemcide bir socket.io uyumlu kitaplık kullanmanız gerekir; çünkü bu, webSocket'ın üstündeki bir protokol olduğundan, her iki ucun da aynı dili konuşması gerekir.

webSockets (ve bu durumda socket.io) web sunucunuzu paylaşmak için üretilmiştir. Yani, sunucunuza herhangi bir webSocket bağlantı isteği sadece web sunucunuzla aynı ana makineye ve bağlantı noktasına gönderilir.

Her webSocket isteği, bir http isteği (böylece web sunucunuz tarafından işlenir) ve http iletişiminin webSocket protokolüne yükseltilmesini isteyen bir başlık olarak başlar. Web sunucunuz bu özel üstbilgiyi gördüğü zaman, daha sonra webSocket protokolüne yükseltmenin tamam olduğunu ve bir http isteği olarak hayatı başlatan soketin yanıtı veren socket.io kütüphanesine kontrolden geçer. App webSocket/socket.io konuşuyor.

socket.io kütüphanesi, bu protokol yükseltme taleplerini görmek için web sunucunuza otomatik olarak bağlanmayı işler. web sayfası olarak

, socket.io istemci kod sadece şu şekilde görünecektir bu bağlanmaya:

<script src="/socket.io/socket.io.js"></script> 
<script> 

var socket = io(); 
socket.on('connect', function() { 
    // socket.io webSocket connection with your server is now established 
}); 

</script> 

socket.io kütüphane otomatik web sayfası geldiğini aynı ana bilgisayara geri bağlanacak . Bir URL koymanıza bile gerek yok.

+0

Teşekkür ederiz. Ama ya Android uygulamasına sahip olsam ve aynı sunucuya yerleştirilmediyse (sanırım Placemarket'te bir yerlerde). Bence socket.io bu amaç için doğru seçim değildir, ama doğru olan nedir? –

+0

Android socket.io istemcisi için kullanabileceğiniz bir kütüphane var https://github.com/nkzawa/socket.io-client.java. Bu gönderiye göz atın: http://socket.io/blog/native-socket-io-and-android/ – jmartins

+0

@JamesMay - İsterseniz Android için bir socket.io uyumlu istemci kütüphanesi bulabilirsiniz. Socket.io'nun webSockets'i kullanmasını oldukça kolay buluyorum, böylece iyi bir yol olabilir. Bir socket.io uyumlu Android kütüphanesine tam olarak nasıl programladığınız, tamamen kullandığınız kütüphaneye ve nasıl çalıştığına bağlı olacaktır. Socket.io sitesinin şu anda problemleri var gibi görünüyor, ancak burada yerel android uygulamaları hakkında bir tartışma var: http://socket.io/blog/native-socket-io-and-android/ – jfriend00