2012-03-13 17 views
22

İki veya daha fazla farklı node.js uygulama sunucusu arasında soket tabanlı p2p iletişimlerini etkinleştirmek istiyorum. Verilen bir sunucu ile hizmet verdiği web uygulaması arasındaki tüm iletişimin üstesinden gelmek için socket.io kullanıyorum - ama aradığım şey sunucudan sunucuya iletişim kurmanın bir yoludur. çıkıyor gibi sunucu tarafının socket.io uygulama sadece bir "bağlantı" yöntemini sunmaz,Bir node.js sunucusunda çalışan (sunucu tarafı) bir socket.io istemcisi kurmak mümkün müdür?

var io = require("socket.io"); 
var socket = io.connect("my remote endpoint"); 

Ancak:

Başlangıçta böyle bir şey kadar kolay olacağını kabul etmişti bir dinleme yöntemi.

Bu neden? Neden bir düğüm uygulama sunucusunu istemci olarak başka bir yerde çalışan bir socket.io sunucusuna uygulayamıyorum? Bu işlevselliği başarabilmemin bir yolu var mı?

+3

sonra konum sadece ne istemci kitaplığı mı için mi? https://github.com/LearnBoost/socket.io-client – pimvdb

+0

Bunu bir node.js uygulamasına bağlayabilir miyim? Nasıl gerektirir()? Anlatabildiğim kadarıyla tarayıcı tabanlı kullanım için tasarlandı. – Myk

+0

Bu s/o parçacığına bakın: http://stackoverflow.com/questions/6785979/socket-io-client-issues-require-socket-io-client-js-not-working – Myk

cevap

51

Tamam, bu yüzden yorumlarda @pimvdb'ye teşekkürler Çalışılabilir bir çözümüm var. Temel olarak, npm yüklenen socket.io kitaplığının socket.io-client adlı başka bir modüle bağımlılığı vardır. Standart bir socket.io kurulumunda bu, node_modules/socket.io/node_modules/socket.io-client

'da kurulacaktır. Bununla birlikte, "npm install socket.io-client" diyebiliriz ve birinci sınıf vatandaş kütüphanesi.

var client = require("socket.io-client"); 
client.connect("http://myendpoint.com:3000/whatever"); 
client.emit("test", "foo"); 

Ve her şey çalışır:

Sonra kullanımı bu gibi görünüyor.

Teşekkürler adamım!

+7

+1 bulduğunuz çözümü gönderdiğiniz – pimvdb

+9

'var client = require (" socket.io-client "); var socket = client.connect ("http: // localhost: 3000"); soketi.emit ("test", "foo"); Bu benim için çalıştı. – nullbuilt

2

Sunucudan sunucuya iletişim için socket.io tam hızına gitmeden önce ..... socket.io, sunucu iletişim altyapısı için bir tarayıcı olarak tasarlanmıştır. Ben emin olmaktan çok P2P sunucu şeyler için en iyi çözümdür. Ayrıca, sunucudan sunucuya kadar - neden sadece Websockets yapmak değil? Düğüm için çeşitli ağ modülü modülleri vardır - ör. Sadece açıklama https://github.com/einaros/ws

+1

Tüm bunları anlıyorum. Durum zaten kurulmuş ve tüm API inşa edilmiş tarayıcı <-> düğüm iletişimi ile bir socket.io tabanlı web uygulaması var olmasıdır. Yerel bir node.js örneğini açıp bir Arduino'ya bağlayabilmeyi ve daha sonra mevcut socket.io oturumunda bir öğe olarak bağlayabilmeyi istedim. bu mantıklı mı? – Myk

+0

Elbette, ilginç geliyor. İyi şanslar. – Mark

6

, bu dinleyici ve imkanı ile bir örnek olayları yayan (ve olmadan tekrar zaten yüklü bir modül yüklemek)

var io = require('socket.io/node_modules/socket.io-client'); 

client = io.connect('http://'+CONFIG.host+':'+CONFIG.port); 

client.on('connect',function() { 
    client.emit("test","foo"); 
}); 
+0

Soketleri için yeni olduğumdan beri. Bu isteği işlemek için, eğer client.emit ("test", "foo") "foo" bir akıştır ve test, bu client.emit gibi bir blobdur ("blobs"), stream) daha açık olmak için sunucu tarafı komut dosyasını (server.js) arıyorum ve yardım dinlemek için portalı ayarlıyorum !! –

İlgili konular