وحدة دردشة بسيطة على Facebook/LinkedIn للتطبيقات الزاوية.
npm install ng-chat
...
import { NgChatModule } from 'ng-chat';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpClientModule,
NgChatModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
<ng-chat [adapter]="adapter" [userId]="userId"></ng-chat>
import { Component } from '@angular/core';
import { ChatAdapter } from 'ng-chat';
import { MyAdapter } from 'my-adapter';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app';
userId = 999;
public adapter: ChatAdapter = new MyAdapter();
}
الإعدادات المطلوبة
إعدادات إضافية
IChatController . الافتراضي كاذب.FileMessage للمستخدم destinatary.التوطين
الأحداث
من أجل توجيه هذه الوحدة حول كيفية إرسال واستقبال الرسائل داخل البرنامج الخاص بك ، سيتعين عليك تنفيذ ChatAdapter الخاص بك. الفصل الذي ستنفذه هو الفئة التي يجب عليك توفيرها كمثيل لإعداد [المحول] للوحدة النامية التي تمت مناقشتها أعلاه.
تكشف هذه الحزمة فئة مجردة ChatAdapter والتي يمكنك استيرادها على تعريف ملف الفصل الجديد الخاص بك:
import { ChatAdapter } from 'ng-chat';
بعد استيراده إلى تطبيق المحول المخصص الخاص بك (على سبيل المثال: myadapter.ts) ، يجب عليك تنفيذ ما لا يقل عن 3 طرق مجردة في فئة Base Chatadapter التي هي:
public abstract listFriends(): Observable<ParticipantResponse[]>;
public abstract getMessageHistory(destinataryId: any): Observable<Message[]>;
public abstract sendMessage(message: Message): void;
سيتم تنفيذ هذه الطرق عبر تكامل العميل. بصرف النظر عن تكامل العميل والإجراءات ، يجب عليك أيضًا توجيه المحول حول كيفية تلقي إشعارات الدفع من الخادم باستخدام الطرق التالية:
public onMessageReceived(participant: IChatParticipant, message: Message): void
public onFriendsListChanged(participantsResponse: ParticipantResponse[]): void
يرجى ملاحظة أنه لا توجد حاجة لتجاوز الطريقتين أعلاه. يجب أن تتصل بهم ضمن تطبيق المحول الخاص بك فقط لإخطار الوحدة النمطية التي تم استلام رسالة أو تم تحديث قائمة الأصدقاء. يمكن تجاهل الثانية إذا قررت استخدام ميزة "PollfriendSlist".
إذا كنت في شك ، فإليك تطبيقان مثال محولان:
يمكن أن يكون IChatParticipant مستخدمًا أو مجموعة ، ولكن من أجل تمكين الدردشة الجماعية ، يجب عليك تنفيذ وتزويد NG-Chat بمثلة IChatGroupAdapter . سيتعين عليك تنفيذ العقد التالي:
groupCreated(group: Group): void;
يقوم NG-Chat بإنشاء GUID في كل مرة يتم فيها إنشاء مجموعة جديدة وتستدعي الطريقة أعلاه حتى تتمكن من التعامل معها في تطبيقك لاستمرار المجموعة التي تم إنشاؤها حديثًا (المعرف ، المشاركين ، إلخ).
بمجرد تنفيذ IChatGroupAdapter ، ما عليك سوى تزويده بمثيل NG-Chat الخاص بك:
<ng-chat [groupAdapter]="myGroupAdapterInstance" ... ></ng-chat>
يدعم NG-Chat مرفق أي نوع من الملفات. للقيام بذلك ، تحتاج إلى تنفيذ نقطة نهاية API على التطبيق الخاص بك يمكن أن تتلقى منشورًا بملف نموذج.
على مثيل NG-Chat الخاص بك ، تأكد من تقديم URI صالحة لمعلمة fileUploadUrl . سيمكن ذلك محول تحميل الملف الافتراضي وسيتم عرض كل نافذة دردشة في أسفل اليمين إجراء مرفق يثير إدخال نوع = ملف.
جنبا إلى جنب مع ملف نموذج الطلب ، سوف يرسل NG-Chat أيضًا حقلًا باسم ng-chat-destinatary-userid يحتوي على معرف المستخدم الذي سيتم إرسال الملف إليه. تأكد من استخدام هذه القيمة لتكوين رسالة استجابة حيث سيتعين على نقطة نهاية API إرجاع FileMessage . سيتم إرسال مثيل FileMessage هذا إلى مستخدم Destinatary تلقائيًا بواسطة NG-Chat بمجرد انتهاء تحميل الملف بنجاح.
يمكنك التحقق من بعض أمثلة تنفيذ تحميل ملفات الخلفية هنا:
يمكن تشغيل بعض إجراءات NG-Chat من تطبيقك باستخدام واجهة IChatController المصدرة.
على افتراض أن لديك مثيل NG-Chat معلنًا على ملف القالب الخاص بك ، أضف معرفًا فريدًا زاويًا له:
<ng-chat #ngChatInstance ... />
ثم على رمز المكون الخاص بك ، أعلن خاصية ViewChild من أجل ربط مثيل NG-Chat الخاص بك:
@ViewChild('ngChatInstance')
protected ngChatInstance: IChatController;
يمكنك الآن تشغيل بعض إجراءات NG-Chat مثل فتح نافذة الدردشة من مكان آخر باستخدام الكود التالي:
this.ngChatInstance.triggerOpenChatWindow(user);
يشبه هذا المحول ChatAdapter ولكنه يوفر زر ترميم لتحميل الرسائل القديمة من سجل رسالتك. يجب عليك تنفيذ طريقة واحدة إضافية: getMessageHistoryByPage . يمكنك التحقق من تنفيذ نموذج لهذا المشروع التجريبي مع فئة DemoAdapterPagedHistory .
إذا كنت تحب هذه الميزة واعتقدت أنها يجب أن تكون السلوك والتنفيذ الافتراضي لـ NG-Chat ، فيرجى فتح مشكلة والتصويت عليها هنا حتى نتمكن من تقديمها كمحول الدردشة الافتراضي على الإصدارات اللاحقة من NG-Chat.
إذا كنت ترغب في عرض صورة مصغرة صورة على رسالة نافذة الدردشة ، فما عليك سوى تعيين نوع الرسالة على Image . يجب أن يشير محتوى الرسالة إلى عنوان URL للصورة الصحيح:
const imageMessage: Message = {
fromId: 1,
toId: 999,
type: MessageType.Image,
message: "https://valid.url/image.jpg",
dateSent: new Date()
};
يرجى اتباع هذا المبدأ التوجيهي عند الإبلاغ عن الأخطاء وطلبات الميزات:
شكرا لتفهمها!
ترخيص MIT (انظر ملف الترخيص للنص الكامل)