Peerjs: هل تريد تشغيل عميل peerjs في تطبيق node.js؟

تم إنشاؤها على ٦ نوفمبر ٢٠١٣  ·  65تعليقات  ·  مصدر: peers/peerjs

هل من الممكن تشغيل عميل peer.js في تطبيق node.js بدلاً من المتصفح؟

أقوم بإنشاء شبكة نظير إلى نظير تتكون من أقران (برمجيين) يعيشون في كل من المتصفحات وتطبيقات node.js. يجب عليهم إرسال البيانات لبعضهم البعض ، لا يوجد فيديو / صوت. سيكون WebRTC حلاً رائعًا لحل التوجيه والاتصال بين الأقران دون الحاجة إلى هيكل عميل / خادم مركزي. لكن يبدو أن WebRTC مدعوم فقط في المتصفح.

انظر أيضًا هذا السؤال: http://stackoverflow.com/questions/18872712/node-js-webrtc-client

التعليق الأكثر فائدة

ملخص
مرحبًا ، أرى أن هذا قديم ، لكن قد تحتاجه أنت أو أي شخص آخر. أنا أعمل على أطروحتي وقد قطعت بعض الخطوات إلى الأمام. لقد جربت العديد من الأشياء ولم يتم تنفيذ أي إشارة على SimplePer. إرسال الرسائل عبر datachannel (nodejs peerjs webrtc) - عبر الشبكة على Raspberry Pi 2 (ARM ، Raspbian Jessie ، ولكن يجب أن تعمل في كل مكان) باستخدام خادم الإشارة المنشور (peerserver) يعمل الآن. العميل الآخر هو متصفح فايرفوكس في بيئة ويندوز. لم أكن لأحققه بدون مناقشتك هنا ، لذا فأنا أعطي الجميل للمجتمع.

الأشياء الأساسية حول ما (لا) يجب القيام به:
-لا تستخدم السيلينيوم ، فهو ليس بالسرعة الكافية ، على الأقل بالنسبة لطلبي
لم ينجح xvfb بالنسبة لي ، حسنًا
-يجب ألا تحتاج إلى وحدة نظير
-على Raspberry على الأقل - استخدم electron-webrtc ، حيث أن wrtc غير متاح للذراع على أي حال
-لا تستخدم التسلسل

من الصعب أن تفعل كل شيء بنفسك ، لذا إليك الكود:
نافذة = عالمية
window.BlobBuilder = تتطلب ("BlobBuilder")
الموقع = {البروتوكول: 'http'}

BinaryPack = يتطلب ("حزمة ثنائية")
XMLHttpRequest = يتطلب ("xmlhttprequest"). XMLHttpRequest؛
var wrtc = يتطلب ('electron-webrtc') ()
// var Peer = يتطلب ('peerjs')

RTCPeerConnection = wrtc.RTCPeerConnection ،
RTCSessionDescription = wrtc.RTCSessionDescription ؛
RTCIceCandidate = wrtc.RTCIceCandidate ،

WebSocket = يتطلب ('ws')
تتطلب ('/ home / pi / node_modules / peerjs / lib / export.js') ؛

فار نظير = نظير جديد (
...
})

var conn = peer.connect ('id')
conn.serialization = 'لا شيء'
conn.send ("مرحبًا من nodejs!")

هذا كل شيء ، مع تحياتي ، JP

ال 65 كومينتر

لقد وجدت مبادرة من helloIAmPau لإنشاء تطبيق node.js لـ WebRTC: https://github.com/helloIAmPau/node-rtc/. ربما من الممكن تجميع القوات؟

مرحبًا جوس ،

سأراقب ذلك. عندما يكون هناك عميل عقدة webrtc موثوق به
يجب أن تكون تافهة إلى ميناء أكثر من peerjs.

يوم الأربعاء ، 6 تشرين الثاني (نوفمبر) 2013 ، الساعة 6:46 صباحًا ، كتب Jos de Jong [email protected] :

لقد وجدت مبادرة من helloIAmPau https://github.com/helloIAmPau إلى
إنشاء تنفيذ node.js لـ WebRTC:
https://github.com/helloIAmPau/node-rtc/. ربما من الممكن تجميعها
القوات؟

-
قم بالرد على هذه الرسالة الإلكترونية مباشرة أو اعرضها على Gi tHubhttps: //github.com/peers/peerjs/issues/103#issuecomment -27878686
.

510-691-3951
http://ericzhang.com

راجع https://github.com/modeswitch/node-webrtc أيضًا. أعتقد أنه يتم استبدال node-rtc به.

شكرا ايريك ، سيكون ذلك رائعا.

سيؤدي هذا أيضًا إلى تمكين تطبيق node.js الذي يعمل كوحدة MCU للتحكم في تدفقات الفيديو / الصوت لمجموعة من الأقران (مكالمة جماعية) ، في بنية نجمية كما أوضح جاستن أوبرتي في آخر Google I / O على WebRTC (من 23 : 19). Node.js جيد في التعامل مع التدفقات بحيث يكون مناسبًا تمامًا.

ericz ما هو سبب إغلاق هذه القضية؟ سيكون دعم node.js رائعًا وقويًا حقًا.

مرحبًا josdejong ،

لقد أغلقته لأنه لا يوجد عنصر عمل ولكن سأعيد فتحه حتى نتمكن من الاحتفاظ بعلامات التبويب على الميزة :)

حسنا، شكرا. لا تتردد في تعديل العنوان إلى شيء مثل "دعم node.js" ومنح المشكلة تصنيفًا مناسبًا ...

: +1: ستكون هذه ميزة مفيدة جدًا.

: +1: التصويت لصالح هذا أيضًا.

: +1: مطلوب بشدة

+1

تمكنت من السخرية من بعض الكائنات وتشغيل peerjs على node.js

نافذة = {} ؛
window.BlobBuilder = تتطلب ("BlobBuilder") ؛
الموقع = {} ؛
location.protocol = "http" ؛

BinaryPack = تتطلب ("حزمة ثنائية") ؛
XMLHttpRequest = يتطلب ("xmlhttprequest"). XMLHttpRequest؛

var wrtc = يتطلب ("wrtc") ؛
RTCPeerConnection = wrtc.RTCPeerConnection ،
RTCSessionDescription = wrtc.RTCSessionDescription ؛
RTCIceCandidate = wrtc.RTCIceCandidate ،

WebSocket = تتطلب ('ws') ؛
var peerClient = يتطلب ("./ peer.js") ؛

تمكنت من الحصول على اتصالات يقوم بها النظراء والحصول على اتصالات للخادم. ومع ذلك ، عندما أحاول إرسال البيانات ، أحصل على خطأ متابعة

[خطأ: الاتصال غير مفتوح. يجب الاستماع إلى حدث open قبل إرسال الرسائل.]

هنا هو الجوهر الكامل

https://gist.github.com/piyushranjan/1204bc579b7c1f5a3e84

ويجب تثبيت حزم npm هذه

npm تثبيت BlobBuilder
تثبيت الحزمة الثنائية npm
npm تثبيت ws
npm تثبيت xmlhttprequest
npm تثبيت wrtc

آه ، هذا رائع حقًا! سوف نلقي نظرة :).

ميشيل

يوم الثلاثاء ، 6 مايو ، 2014 الساعة 7:37 صباحًا ، بيوش رانجان [email protected]

تمكنت من السخرية من بعض الكائنات وتشغيل peerjs على node.js

نافذة = {} ؛
window.BlobBuilder = تتطلب ("BlobBuilder") ؛
الموقع = {} ؛
location.protocol = "http" ؛

BinaryPack = تتطلب ("حزمة ثنائية") ؛
XMLHttpRequest = يتطلب ("xmlhttprequest"). XMLHttpRequest؛

var wrtc = يتطلب ("wrtc") ؛
RTCPeerConnection = wrtc.RTCPeerConnection ،
RTCSessionDescription = wrtc.RTCSessionDescription ؛
RTCIceCandidate = wrtc.RTCIceCandidate ،

WebSocket = تتطلب ('ws') ؛
var peerClient = يتطلب ("./ peer.js") ؛

تمكنت من الحصول على اتصالات يقوم بها النظراء والحصول على اتصالات للخادم.
ومع ذلك ، عندما أحاول إرسال البيانات ، أحصل على خطأ متابعة

[خطأ: الاتصال غير مفتوح. يجب أن تستمع للحدث المفتوح
قبل إرسال الرسائل.]

هنا هو الجوهر الكامل

https://gist.github.com/piyushranjan/1204bc579b7c1f5a3e84

ويجب تثبيت حزم npm هذه

npm تثبيت BlobBuilder
تثبيت الحزمة الثنائية npm
npm تثبيت ws
npm تثبيت xmlhttprequest
npm تثبيت wrtc

-
قم بالرد على هذه الرسالة الإلكترونية مباشرة أو اعرضها على Gi tHubhttps: //github.com/peers/peerjs/issues/103#issuecomment -42292282
.

@ ميشيل أي حظ مع هذا بالفعل؟ حاولت ، ويبدو أن فتح الاتصال يعمل ولكن لا يتم استلام الرسائل المرسلة مطلقًا.

: +1: لهذه الميزة

: +1: لهذه الميزة

: +1:

: +1 :: + 1 :: + 1:

كنت أتساءل ما هو وضع هذا؟ سيكون رائعا إذا تم دعم هذا؟

هناك وحدة عقدة لـ peerjs ، لكنني أعتقد أنها لا تعمل بعد. عندما أطلب ذلك ، أحصل على نافذة غير محددة ، وهو اعتراض عادل.
https://www.npmjs.org/package/peerjs#readme

لذلك لدي فضول: هل هناك شيء ما يحدث؟ سيكون من الرائع الحصول عليه! ؛)

وحدة العقدة هذه مخصصة لرمز المتصفح :).

ميشيل

يوم الخميس 23 أكتوبر 2014 الساعة 11:37 صباحًا ، Lixissimus [email protected]
كتب:

هناك وحدة عقدة لـ peerjs ، لكنني أعتقد أنها لا تعمل بعد. عندما
تتطلب ذلك ، أحصل على نافذة غير محددة ، وهو اعتراض عادل.
https://www.npmjs.org/package/peerjs#readme

لذلك لدي فضول: هل هناك شيء ما يحدث؟ سيكون من الرائع أن يكون لديك
هو - هي! ؛)

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/peers/peerjs/issues/103#issuecomment -60287567.

إذن ماذا يفترض أن تفعل؟

لا أعرف ما إذا كنت مرتبكًا بشأن العقدة ، ولكن يبدو من الغريب أن يكون لدي وحدة npm للنظراء ، إذا كان يمكن استخدام وحدة peerjs نفسها من المتصفح فقط؟

عذرًا ، كان هذا قبل أن نبدأ في نشر المكتبة على bower.

ميشيل

يوم الخميس 23 أكتوبر 2014 الساعة 11:51 صباحًا ، Alan Chusuei [email protected]
كتب:

لا أعرف ما إذا كنت في حيرة من أمري بشأن العقدة ، ولكن يبدو الأمر غريبًا
وحدة npm للنظراء ، إذا كان يمكن استخدام وحدة peerjs نفسها فقط من
المتصفح؟

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/peers/peerjs/issues/103#issuecomment -60289790.

AChusuei لا أرى أي مشكلة في وجود مكتبات خاصة بالمتصفح في npm ، أو مكتبات متشابهة. بالنسبة لتطبيقات الويب JS المكدسة الكاملة ، أود التعامل مع npm فقط ، بدلاً من الاضطرار إلى جلب نصف مكتبات I من npm والنصف الآخر من bower.

michelle آمل حقًا أن يحصل peerjs على دعم لعميل node.js !!

josdejong ، أعتقد أنه يمكنك فعل ذلك بهذه الطريقة. ما زلت جديدًا على عالم العقدة ، منفتح على فعل الأشياء بشكل مختلف!

: +1:

حتى يتم حل هذه المشكلة ، قد تكون هناك حلول بديلة مع متصفحات بدون رأس. لم أختبرهم بنفسي:

سأجرب الثانية.

: +1:

+ 2 ^ 56 للميزة!

: +1:

: +1:

: +1:

+1

لا يبدو أن الاختراق الذي نشره piyushranjan يعمل مع الإصدار الثابت الحالي ، لأنه لا يصدر أي شيء عالميًا (وجميع الوحدات في ملف واحد).

يبدو أن الحل البديل لهذا هو استخدام الإصدار غير "المترجمة" / المتسلسل.

وبالتالي ، قم باستنساخ المستودع ، ثم افعل شيئًا كالتالي:

window = global;
location = {protocol: 'http'};

XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;

var wrtc = require("wrtc");
RTCPeerConnection = wrtc.RTCPeerConnection;
RTCSessionDescription = wrtc.RTCSessionDescription;
RTCIceCandidate = wrtc.RTCIceCandidate;

WebSocket = require('ws');

require('./peerjs/lib/exports.js');

var peer = new Peer({
  // snip...
});

انتبه بشكل خاص إلى السطر require بالقرب من الجزء السفلي ، والذي يتولى تحميل جميع الأجزاء المنفصلة نيابة عنك ، في الكائن global / window .

لا يزال اختراقًا سيئًا ، لكن يبدو أنه يعمل ، على الأقل في الاختبارات الأساسية للغاية.

ملاحظة: تنطبق نفس التحذيرات ، ما زلت بحاجة إلى تثبيت بعض الحزم أولاً:

npm install BlobBuilder binary-pack ws xmlhttprequest wrtc

lewiseason هل حصلت بالفعل على اتصال قيد التشغيل وتمكنت من إرسال بعض البيانات على سبيل المثال؟

لم أنجح في هذا حتى الآن. يبدو أنه يمكنني فتح اتصال ، ولكن لم يتم إنشاء قناة بيانات.

هذا ما جربته:

  1. تثبيت

sudo apt-get install libnss3-dev libexpat1-dev npm install peerjs BlobBuilder binary-pack ws xmlhttprequest wrtc

  1. أنشئ ملف html peer1.html يربط نظير عميل بالمعرف 'peer1' :

"" html



الند 1



""
  1. أنشئ peer3.js البرنامج النصي node.js :

شبيبة
نافذة = عالمية ؛
window.BlobBuilder = تتطلب ("BlobBuilder") ؛
الموقع = {البروتوكول: 'http'} ؛

BinaryPack = تتطلب ("حزمة ثنائية") ؛
XMLHttpRequest = يتطلب ("xmlhttprequest"). XMLHttpRequest؛

var wrtc = يتطلب ("wrtc") ؛
RTCPeerConnection = wrtc.RTCPeerConnection ،
RTCSessionDescription = wrtc.RTCSessionDescription ؛
RTCIceCandidate = wrtc.RTCIceCandidate ،

WebSocket = تتطلب ('ws') ؛

تتطلب ('peerjs / lib / export.js') ؛

var peer = new Peer ('peer3'، {key: 'lwjd5qra8257b9'، debug: true}) ؛

peer.on ('open'، function () {
console.log ('peer open') ؛
var conn = peer.connect ('peer1') ؛

 conn.on('data', function(data) {
   console.log('Received', data);
 });

 conn.on('error', function (err) {
   console.log('Error', err);
 });

 conn.on('open', function () {
   console.log('connection open');
   conn.send('Hello from ' + peer.id + '!');
 });

}) ؛
""

  1. افتح الملف peer1.html في متصفحك
  2. قم بتشغيل البرنامج النصي node.js peer3.js

بالنظر إلى إخراج التصحيح ، يبدو أن peer3 متصل بنجاح بـ peer1 ، لكنه لا يؤسس قناة بيانات: مخرجات peer1 "اتصال جديد بـ peer3" ، ولكن لم يتم استلام رسائل.

أخشى أنني لم أحقق نجاحًا كبيرًا في اختباره - بدا لي فرانكنشتاين قليلاً لاستخدامه في الإنتاج ، لذلك انتهى بي الأمر بتركه. آسف :(

: +1:

: +1:

أي تحديث على هذا؟

josdejong تكمن المشكلة في بيانات التأشير. يبدو أنه لم يتم إرفاق بيانات STUN بالعرض / الإجابة. بدون هذه البيانات لا يمكن إجراء اتصال فعلي. يقوم ما يلي بإجراء اتصال بين المتصفح والعقدة ولكن بدون إشارات النظراء.

https://github.com/cjb/serverless-webrtc

+1

+1

أي شخص يريد فتح مكافأة؟

نظرًا لأن هذا مفتوح منذ أكثر من عامين: هل هناك أي حزمة (أخرى) معروفة تعمل P2P في المتصفح والعقدة؟

لم يتح لي الوقت للتحقق من ذلك ، لكن https://github.com/feross/simple-peer يقول إنه يعمل في كل من node.js والمتصفح.

هل هذا ما تبحث عنه؟ https://github.com/socketio/socket.io-p2p

من الملف التمهيدي:

"توفر هذه الوحدة طريقة سهلة وموثوقة لإعداد اتصال WebRTC بين الأقران والتواصل باستخدام الأحداث (بروتوكول socket.io).

يتم استخدام Socket.IO لنقل بيانات التشوير وكإجراء احتياطي للعملاء حيث لا يتم دعم WebRTC PeerConnection. "

بقدر ما أشعر بالقلق ، فإنه لا يعمل على Node. لهذا السبب واجهت هذا الموضوع.

همم. هل يمكن أن تكون أكثر دقة؟ أنا أستخدمه الآن ، باستخدام خادم عقدة لتوصيل الأقران الذين يقومون بعد ذلك بإنشاء اتصالات webRTC مع بعضهم البعض و / أو جهاز خادم العقدة.

باستخدام خادم عقدة لتوصيل الأقران الذين يقومون بعد ذلك بإنشاء اتصالات webRTC مع بعضهم البعض

لذا ، أنت _ لا _ تقوم بتشغيله كعميل. أنت تقوم بتشغيله على خادم يربط عملاء آخرين (والذي لم تذكره على أنه تطبيقات عقد - إذا كانوا كذلك ، فسأكون مهتمًا بكيفية إعدادك لهم).
يدور هذا الموضوع حول استخدام peerjs (أو ربما أي شيء آخر) كنظير (عميل) في تطبيق عقدة.

اتصالات webRTC ببعضها البعض و / أو جهاز خادم العقدة

يبدو أن الجزء الثاني من ذلك هو بالضبط ما تتم مناقشته هنا. هل يستطيع احد ان يؤكد هذا الشيء؟

لا ، تكمن المشكلة في استخدام NodeJS كعميل WebRTC. بمعنى آخر. الاتصال من مثيل NodeJS ليس بالضرورة الخادم.

أوه ، اعتذارات. سوف يقوم SimplePeer بذلك. ولكنه يتطلب أن يكون لدى النظام الأساسي للخادم إمكانات معينة من webrtc مثبتة. توفر الوحدة النمطية "wrtc" هذا على معظم الأجهزة. لا سيما _not_ على raspberry pi الآن ، في حال كان هذا مهمًا بالنسبة لك (الأمر بالنسبة لي!)

مقتطف من readme.md الخاص بهم:

في العقدة

لاستخدام هذه المكتبة في العقدة ، قم بتمرير opts.wrtc كمعامل:

var SimplePeer = يتطلب ('simple-peer')
var wrtc = يتطلب ('wrtc')

var peer1 = SimplePeer جديد ({البادئ: صحيح ، wrtc: wrtc})
var peer2 = SimplePeer جديد ({wrtc: wrtc})

+1 ستكون ميزة رائعة

تحقق من إلكترون webrtc أو webrtc الأصلي. أستخدم Electron-webrtc لمثيل node.js الخاص بي للاتصال بالمتصفحات (باستخدام قناة البيانات على وجه التحديد)

ملخص
مرحبًا ، أرى أن هذا قديم ، لكن قد تحتاجه أنت أو أي شخص آخر. أنا أعمل على أطروحتي وقد قطعت بعض الخطوات إلى الأمام. لقد جربت العديد من الأشياء ولم يتم تنفيذ أي إشارة على SimplePer. إرسال الرسائل عبر datachannel (nodejs peerjs webrtc) - عبر الشبكة على Raspberry Pi 2 (ARM ، Raspbian Jessie ، ولكن يجب أن تعمل في كل مكان) باستخدام خادم الإشارة المنشور (peerserver) يعمل الآن. العميل الآخر هو متصفح فايرفوكس في بيئة ويندوز. لم أكن لأحققه بدون مناقشتك هنا ، لذا فأنا أعطي الجميل للمجتمع.

الأشياء الأساسية حول ما (لا) يجب القيام به:
-لا تستخدم السيلينيوم ، فهو ليس بالسرعة الكافية ، على الأقل بالنسبة لطلبي
لم ينجح xvfb بالنسبة لي ، حسنًا
-يجب ألا تحتاج إلى وحدة نظير
-على Raspberry على الأقل - استخدم electron-webrtc ، حيث أن wrtc غير متاح للذراع على أي حال
-لا تستخدم التسلسل

من الصعب أن تفعل كل شيء بنفسك ، لذا إليك الكود:
نافذة = عالمية
window.BlobBuilder = تتطلب ("BlobBuilder")
الموقع = {البروتوكول: 'http'}

BinaryPack = يتطلب ("حزمة ثنائية")
XMLHttpRequest = يتطلب ("xmlhttprequest"). XMLHttpRequest؛
var wrtc = يتطلب ('electron-webrtc') ()
// var Peer = يتطلب ('peerjs')

RTCPeerConnection = wrtc.RTCPeerConnection ،
RTCSessionDescription = wrtc.RTCSessionDescription ؛
RTCIceCandidate = wrtc.RTCIceCandidate ،

WebSocket = يتطلب ('ws')
تتطلب ('/ home / pi / node_modules / peerjs / lib / export.js') ؛

فار نظير = نظير جديد (
...
})

var conn = peer.connect ('id')
conn.serialization = 'لا شيء'
conn.send ("مرحبًا من nodejs!")

هذا كل شيء ، مع تحياتي ، JP

مرحبًا jeryfast ، شكرًا على الحلول التي قدمتها ، كنت أبحث عن شيء من هذا القبيل 👍

لقد اختبرته على جهاز Mac (ليس على التوت حتى الآن) وكنت أتلقى الخطأ "فشل تعيين خاصية" النوع الثنائي "على" RTCDataChannel ": دعم Blob لم يتم تنفيذه بعد"

بعد إجراء بعض البحث ، وجد أنه في أدوات الملفات ، على المسار node_modules / peerjs / lib حول السطر 116:

try {
        dc.binaryType = 'blob';
        binaryBlob = true;
      } catch (e) {
      }

الذي تسبب في حدوث الخطأ وتعطل التطبيق.

إذا تم التعليق على الكود ، فإن التطبيق يعمل ويتصرف كعميل متصفح ، إنه جميل. لكن اختراقًا سيئًا ، لذلك كنت أبحث عن طريقة "للتهيئة" أو القيام بشيء لا يتم تغيير الرمز من lib ، ولكن حتى الآن لم أجد أيًا منه.

يكمن التحدي عند تنفيذ هذا الجزء من التعليمات البرمجية ، أي في عملية تحميل الوحدة النمطية ، عندما يتم طلب عمليات التصدير:

require('./node_modules/peerjs/lib/exports.js');

أي شخص لديه وأيديية أو اقتراح حول كيفية تصحيح هذا؟

يعتبر

جميل ، إذا كنت تستخدم التسلسل "بلا" ، فإنه يعمل أيضًا ، دون تغيير أي شيء في المكتبة. يعتبر

مرحبًا مرة أخرى @ jeryfast ، إنه يعمل على التوت كما قلت. تتعلق المشكلة في آخر مشاركة لي بـ OS X.

حسنًا ، الشيء الرائع هو العمل 👍

لا ، لنبدأ المرح 💃

أهلا
سأتعامل مع هذا الخطأ.
""
global.postMessage (messageName، '*') ؛
^

TypeError: global.postMessage ليس دالة
في Object.setZeroTimeoutPostMessage [as setZeroTimeout] (

crosogf ، هذا الخطأ يبدو لي كعرض لمشكلة أكبر. يبدو أن postMessage هو المكان الوحيد المستخدم في رمز معالجة الأخطاء. أعتقد أن الأمر يتعلق باكتشاف دعم النقطة الثنائية في lib / util.js (الرمز @ nuno-nlfsoftware يقول للتعليق). لقد لاحظت وجود مكانين للشفرة ، في dist / peer.js أو dist / peer.min.js وفي lib / util.js. بالنسبة لي ، كانت التعديلات فقط على الأخير فعالة (بسبب اختراقjeryfast لطلب lib / export.js).

أيضًا ، لا يلزم تعيين تسلسل الاتصال على none . يمكنك استخدام أي خيار آخر إلى جانب binary ، ما عليك سوى تعيينه لأن الخيار الثنائي هو الخيار الافتراضي. لقد قمت بتعيينه على json والذي يعمل بشكل جيد.

سأترك هذا هنا https://www.npmjs.com/package/peerjs-nodejs

شكرًا ، أعتقد أنه يجب أن يكون جزءًا من PeerJS.

هذا هو الكود الخاص بي بعد الاختبار jeryfast & peerjs-nodejs

const peerJs = require('peerjs-nodejs');
const peer = peerJs("myPeerId", {
host: '192.168.137.231',
port: 9000,
pingInterval: 5000,
path: '/myapp',
debug: 3, 
iceTransportPolicy: 'relay',
config: {
'iceServers': [
    { urls: "stun:stun.l.google.com:19302" },
    {
        urls: "turn:34.192.149.24:5678?transport=udp",
        username: "USER", credential: "PASS"
    }
]
}
});

let conn = peer.connect('myPeerJS', {
    reliable: true
});


setTimeout(()=>{
 // NOT JSON
 // conn.serialization='none';
 // conn.send('hello from nodejs!');  

 // JSON WAY
 conn.serialization = 'json';
 conn.send({ value: 'hello from nodejs!' });

}, 3000);

setTimeout(()=>{
  conn.close();
  console.log("CONN CLOSE");
  process.exit();
}, 10000);

مرحبًا ، أتلقى هذا الخطأ ، بمجرد أن أقوم بإنشاء مثيل Peer (باستخدام peerjs-nodejs ) على خادم NodeJS. أنا لا أقوم حتى بإنشاء اتصال بنظير بعيد في الوقت الحالي. هل قام شخص ما بحلها؟

server.js

const Peer = require('peerjs-nodejs')

...

this.peer = Peer('webRTC-webinar-plugin', {
      host: '/',
      path: 'peer-js',
      port: (useHTTPS) ? 8443 : 8080,
      secure: (useHTTPS) ? true : false
})
/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/peerjs/lib/util.js:234

      global.postMessage(messageName, '*');
             ^
TypeError: global.postMessage is not a function
    at Object.setZeroTimeoutPostMessage [as setZeroTimeout] (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/peerjs/lib/util.js:234:14)
    at Peer.disconnect (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/peerjs/lib/peer.js:420:8)
    at Socket.<anonymous> (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/peerjs/lib/peer.js:120:12)
    at Socket.emit (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/eventemitter3/index.js:71:35)
    at exports.XMLHttpRequest._http.onerror (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/peerjs-nodejs/node_modules/peerjs/lib/socket.js:91:12)
    at exports.XMLHttpRequest.dispatchEvent (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:591:25)
    at exports.XMLHttpRequest.handleError (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:533:10)
    at ClientRequest.errorHandler (/Users/federico/Documents/webRTC-webinar-plugin/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:459:14)
    at ClientRequest.emit (events.js:310:20)
    at Socket.socketErrorListener (_http_client.js:426:9)

هل يمكن لاحد ان يساعد؟ شكرا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات