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

يكون فاصل الخط المتقطع مرئيًا في الصورة ، عند تحريكه يصبح لونه أصفر مقلم. عن طريق تحريك الفاصل ، يمكنك ضبط ارتفاع الحقل لإدخال الرسائل.
وبالمثل ، يمكنك تغيير عرض قائمة جهات الاتصال وقائمة الرسائل.
إرسال الرسائل عبارة عن رسوم متحركة ، ولم يكن هناك رسوم متحركة عند إرسال الرسائل في برامج أخرى.
يتم استخدام التدرج الرمادي والوردي لخلفية قائمة جهات الاتصال ، ويمكن العثور على مزيج مماثل في السماء في شكل توهج.
لدى المستخدمين عبر الإنترنت لون برتقالي من الاسم ، وغرف متصلة (مجموعات) من اللون الأسود. المستخدمون ليسوا على الإنترنت والمجموعات المعطلة باللون الرمادي. يمكنك تمييز غرفة عن مستخدم في قائمة جهات الاتصال حسب اسم النجمة ، تبدأ أسماء الغرف بـ with

يمكن للمستخدمين إنشاء غرف جديدة (مجموعات) ، إضافة إزالة المستخدمين من مجموعات. أيضًا ، من الممكن تغيير الغرف إذا كان لدى مستخدم التحرير علامة مسؤول في قائمة مستخدمي الغرفة.

من الممكن نقل الملفات ، يتم إرسال ملفات الصور على الفور في الرسالة وعرضها في الرسالة. لا يتم إرسال ملفات الفيديو على الفور ، يتم إرسال الإطار الأول فقط ، لتنزيل يجب تشغيل الفيديو. يتم تنزيل الملفات الأخرى بالمثل فقط بعد النقر على الملف في الرسالة. تم تكوين الحد الأقصى لحجم الملف ، وكذلك حجم جزء الملف الذي تم تقسيم الملفات الكبيرة إليه ، في push0k admin. لإرسال ملف ، يمكنك استخدام زر "إرسال مرفق" ؛ يمكنك أيضًا سحب الملف وإفلاته في نافذة الرسائل. وبالمثل ، يمكن سحب ملف مرسل من رسالة إلى مجلد Explorer أو finder على نظام Mac OS. بمعنى آخر ، يتم تطبيق السحب والإفلات للملفات.

يتم حذف الرسائل علامات HTML. ولكن هناك تخفيض مماثل لخفض السعر.
*
جريئة *
~
المائل ~
_
تسطير _
يمكنك إرسال الروابط ، ولكن يجب أن يكون الرابط رسالة منفصلة.
كل رسالة بها أزرار:
نقلا عن الرسالة
➦ إعادة توجيه الرسالة

من أجل اتصال آمن بالخادم ، يتم تنفيذ زر مع قفل. يشبه المنطق المتصفحات - انتهت صلاحية شهادة غير آمنة أو موقعة ذاتيا أو من اسم مجال آخر - القفل مفتوح - الاتصال غير آمن. يفتح الزر ذو القفل معلومات الشهادة.

جميع مستخدمي الخادم مرئيون لبعضهم البعض ، أي أن جهات اتصال كل مستخدم هي مستخدمين آخرين. يمكن للمستخدمين إعادة تسمية جهات الاتصال الخاصة بهم. من الممكن حظر إعلامات الرسائل الجديدة من جهة اتصال ، كما يمكنك أيضًا حظر الرسائل بالكامل من جهة اتصال.

الرسائل لا تنفذ إرسال الابتسامات. لا يوجد اتصال فيديو أو صوت. لا توجد وسيلة لإظهار شاشة المستخدم. في المستقبل ، سأنفذ بالتأكيد بعض ما سبق.
تنزيل عميل push0k:
النوافذنظام التشغيل Mac OSيتم تقديم الطلب على الإلكترون باستخدام vue.js. التطبيق مجاني ، لكن على عكس الخادم الموضح في الجزء الأول من المقالة ، لا أخطط لفتح شفرة المصدر حتى الآن.
مثال اتصال
يتكون الاتصال من ثلاثة أجزاء:
- تأسيس اتصال.
من أجل اتصال آمن ، هذا هو مصافحة الرسائل. - إذن
أثناء التفويض ، بالإضافة إلى تسجيل الدخول ، يتم إرسال علامة تجزئة من معرف اتصال كلمة المرور + معرف.
في رسالة التفويض ، يتم نقل معلمات الكمبيوتر: نوع نظام التشغيل ، إصدار نظام التشغيل ، المعالج ، الذاكرة ، اسم الكمبيوتر. تعد هذه البيانات المرجعية ضرورية للإحصائيات وفهم كيفية تأثير نوع نظام التشغيل والمعالج والذاكرة على سرعة الاتصال وتبادل البيانات وما إلى ذلك.
تم عمل النسخ الأولى من البرنامج وعملت من 1s. عادة ، على جهاز كمبيوتر واحد ، لا يمكن إطلاق قاعدة بيانات واحدة 1c ، ولكن عدة ، على سبيل المثال ، مدير الذاكرة و BP في محاسب. إذا تم استخدام الحل لدعم المحاسبة ، فمن المهم أن نفهم من قاعدة البيانات التي تم إرسال رسالة المحاسب إليها. أثناء التخويل ، يتم أيضًا نقل بيانات قاعدة البيانات. - تزامن البيانات.
بعد تلقي رسالة حول التفويض الناجح ، يتم إرسال رسالة طلب بيانات مع تاريخ إلى الخادم. أكبر تاريخ لآخر رسالة أو آخر تغيير لمستخدم أو غرفة (مجموعة). حسب التاريخ المرسل ، يتم تحديد الرسائل الجديدة أو المستخدمين الذين تم تغييرهم ، والغرف (المجموعات). يمكن أن يكون التاريخ فارغًا ، ثم يتم تلقي جميع الرسائل من قِبل المستخدمين والغرف ، ويمكن أن تكون هذه هي المرة الأولى التي تتصل فيها.
بعد تلقي بيانات المزامنة ، يتم إرسال الرسائل التي تؤكد استلام البيانات والوقت المحسوب لـ "إعداد الاتصال" و "التخويل" و "مزامنة البيانات" إلى الخادم.
قم بتوصيل socket.io بصفحة HTML.
ل node.js
- فتح وحدة التحكم
- انتقل إلى مجلد المشروع الأمر `cd / yourCatalog`
- قم بتشغيل الأمر install `npm install socket.io`
كود مثال Node.js:
const io = require('socket.io-client'); const crypto = require('crypto'); const os = require('os'); const cpusarray = os.cpus(); let actiontime = 0; let contime = 0; let auftime = 0; let datasintime = 0; let socket; let lastdatesync = new Date(0).toISOString(); let usernumber = '+7 (999) 777-77-77'; let pw = 'somePassword'; let baseref = process.cwd(); let basename = 'push0k client'; let baseid = crypto .createHash('md5') .update(appdirectory) .digest('hex'); baseid = baseid.substring(0, 8) + '-' + baseid.substring(8, 12) + '-' + baseid.substring(12, 16) + '-' + baseid.substring(16, 20) + '-' + baseid.substring(20, 32); let basever = '19.02'; let clientid = crypto .createHash('md5') .update(os.hostname()) .digest('hex'); clientid = clientid.substring(0, 8) + '-' + clientid.substring(8, 12) + '-' + clientid.substring(12, 16) + '-' + clientid.substring(16, 20) + '-' + clientid.substring(20, 32); let syncdata = ''; let syncdatasize = 0; function sha256(p) { const hash = crypto.createHash('sha256'); hash.update(p); return '' + hash.digest('hex'); } function connect() { socket = io('http://yourServer.com:6789', { transports: ['websocket'], timeout: 5000 }); socket.connect(); socket.on('connect', onconnect); socket.on('message', onmessage); actiontime = new Date().getTime(); } function onconnect() { contime = new Date().getTime() - actiontime; usernumber = usernumber.replace(/\D/g, ''); socket .binary(false) .emit( 'message', '{"event":"auf","user":"' + usernumber + '","password":"' + sha256(pw + socket.id) + '","roomsjoin":true,"basename":"' + basename + '","basever":"' + basever + '","baseid":"' + baseid + '","baseref":"' + encodeURIComponent(baseref) + '","osversion":"' + encodeURIComponent(os.release()) + '","appversion":"18.08","clientid":"' + clientid + '","infappview":"","ram":"' + os.totalmem() / 1024 / 1024 + '","proc":"' + encodeURIComponent(cpusarray[0].model) + '","ostype":"' + encodeURIComponent(os.type() + ' ' + os.arch()) + '","compname":"' + encodeURIComponent(os.hostname()) + '"}' );