سوکتآیاو net/socketio
کارخواه Socket.IO: رویدادها، تایید، فضای نام و اتصال دوبارهی خودکار.
واردسازی شبکه.سوکتآیاو
Socket.IO کتابخانهی رایج گفتگوی زنده در دنیای Node.js است. این بسته کارخواهی برای سرورهای Socket.IO نسخهی ۳ و ۴ (پروتکل Engine.IO نسخهی ۴) است، روی وبسوکت یا HTTP long polling؛ خودش سرور ندارد. وقتی به کارش ببرید که طرف مقابل از قبل Socket.IO حرف میزند، مثلاً سرور گفتگو یا داشبوردی که با Node.js نوشته شده. اگر هر دو سر در اختیار شماست و کارخواه مرورگر است، سرور سادهی وبسوکت سادهتر است، چون Socket.IO قالب بستهی خودش را روی وبسوکت میگذارد.
الگوی کار: اتصال وصل میشود، روی برای هر رویداد شنونده میگذارد و ارسال ... رویداد میفرستد. هیچ چیز در پسزمینه خوانده نمیشود: شنوندهها فقط وقتی صدا زده میشوند که برنامه با اجرا، اجرا برای، پمپ، بعدی یا ارسال منتظر تایید پیامها را پردازش کند. آرگومانهای هر رویداد یک آرایهی جیسوناند و با آرگومان رشته، آرگومان عددی و مانند آن خوانده میشوند. اگر فرستنده پاسخ بخواهد، ack_id رویداد نامنفی است و با پاسخ جوابش را میدهید. برای چند فضای نام روی یک اتصال، مدیر بسازید.
چیزهایی که بیشتر غافلگیر میکنند:
- برنامهای که پمپ نکند هیچ چیز نمیشنود. پینگهای سرور هنگام پمپ پاسخ داده میشوند، پس کارخواهی که بیشتر از مهلت پینگ سرور بخوابد قطع میشود.
بعدیرویدادهای اتصال را هم برمیگرداند، مثلرویداد اتصال؛ حلقه را تا نوعی که میخواهید بر آن بایستید ادامه دهید، نه تا نخستین رویدادی که پیام نیست. صف آن از نخستین فراخوانیبعدیشروع میشود و تازهترینevent_queueرویداد (پیشفرض ۲۵۶) را نگه میدارد و قدیمیترین را دور میریزد.- آنچه میسازید آزاد کنید.
آزادسازی آرگومانبرای فهرست آرگومانها وآزادسازی تاییدبرای پاسخها، وگرنه کارخواه بلندمدت مدام بزرگتر میشود. - سرورهای Socket.IO نسخهی ۲ (پیش از ۲۰۲۰) پروتکل قدیمیتری دارند و پشتیبانی نمیشوند.
رسیدگی به رویدادها در حلقهی خودتان
شنوندهها با روی روش معمولاند، ولی گاهی یک حلقهی ساده خواناتر است: کارگری که هر بار یک رویداد را انجام میدهد، یا برنامهای که میان پیامها کار دیگری هم دارد. بعدی حداکثر تا چند میلیثانیهی داده شده صبر میکند و یک رویداد برمیگرداند. kind آن میگوید چیست: پیامی از سرور (رویداد پیام، با نام و آرگومانها)، تغییری در اتصال مثل رویداد قطع (دلیلش در message است)، یا رویداد مهلت وقتی چیزی نرسیده.
واردسازی شبکه.سوکتآیاو
واردسازی شبکه.وبسوکت
ناپایا سرور من := وبسوکت.سرور {}
تابع سرور ساختگی():
ناپایا اتصال := وبسوکت.پذیرش(سرور من)
_ := وبسوکت.ارسال متن(اتصال، `0{"sid":"s1","upgrades":[],"pingInterval":20000,"pingTimeout":5000}`)
پیام := وبسوکت.دریافت با مهلت(اتصال، ۳۰۰۰)
اگر پیام.نوع برابر وبسوکت.متن و پیام.متن برابر "40":
_ := وبسوکت.ارسال متن(اتصال، `40{"sid":"a1"}`)
_ := وبسوکت.ارسال متن(اتصال، `42["قیمت","BTC",61250]`)
_ := وبسوکت.ارسال متن(اتصال، `42["قیمت","ETH",2410]`)
_ := وبسوکت.ارسال متن(اتصال، `42["halt","maintenance"]`)
_ := وبسوکت.ارسال متن(اتصال، "41")
پایان
_ := وبسوکت.دریافت با مهلت(اتصال، ۱۰۰۰)
وبسوکت.بستن(اتصال)
پایان
تابع ریشه:
سرور من = وبسوکت.شنود(۰)
نخ := نخساز(سرور ساختگی)
ناپایا گزینه := سوکتآیاو.گزینههای جدید()
گزینه.حملونقل = سوکتآیاو.حملونقل وبسوکت
گزینه.اتصال دوباره = نادرست
کارخواه := سوکتآیاو.اتصال با("http://127.0.0.1:" + وبسوکت.درگاه(سرور من)، گزینه)
ناپایا ادامه := درست
تا ادامه:
رخداد := سوکتآیاو.بعدی(کارخواه، ۳۰۰۰)
اگر رخداد.نوع برابر سوکتآیاو.رویداد پیام و رخداد.نام برابر "قیمت":
سرچاپ "قیمت"، سوکتآیاو.آرگومان رشته(رخداد، ۰)، سوکتآیاو.آرگومان عددی(رخداد، ۱)
وگرنه رخداد.نوع برابر سوکتآیاو.رویداد پیام:
سرچاپ "رویداد"، رخداد.نام، سوکتآیاو.آرگومان رشته(رخداد، ۰)
وگرنه رخداد.نوع برابر سوکتآیاو.رویداد قطع:
سرچاپ "قطع شد:"، رخداد.پیام، رخداد.پیام برابر سوکتآیاو.قطع توسط سرور
ادامه = نادرست
وگرنه رخداد.نوع برابر سوکتآیاو.رویداد مهلت:
سرچاپ "در مهلت چیزی نرسید"
ادامه = نادرست
پایان
پایان
سوکتآیاو.بستن(کارخواه)
نخپیوند(نخ)
وبسوکت.بستن سرور(سرور من)
پایانبرنامه سرور کوچک خودش را همراه دارد که قالب Socket.IO را روی یک وبسوکت حرف میزند، پس بدون Node.js اجرا میشود. سرور واقعی همین بستهها را میفرستد: 42["قیمت","BTC",61250] رویدادی به نام قیمت با دو آرگومان است و 41 یعنی سرور فضای نام را بسته، که به شکل قطع توسط سرور میرسد. پس از این دلیل کارخواه خودش دوباره وصل نمیشود، چون سرور عمدا قطع کرده است.
ورود با توکن
سرورهای Socket.IO معمولاً کاربر را در یک میانافزار بررسی میکنند که شیء auth اتصال را میخواند. پیش از اتصال آن JSON را در auth گزینهها بگذارید. وقتی میانافزار نپذیرد، سرور به جای نشست یک خطای اتصال برمیگرداند؛ آن وقت رد شده درست است و دلیل رد پیامی را که سرور داده نگه میدارد.
واردسازی شبکه.سوکتآیاو
تابع ریشه:
ناپایا گزینه := سوکتآیاو.گزینههای جدید()
گزینه.احراز هویت = `{"token":"eyJhbGciOiJIUzI1NiJ9.e30.x"}`
گزینه.اتصال دوباره = نادرست
کارخواه := سوکتآیاو.اتصال با("https://chat.example.com"، گزینه)
اگر سوکتآیاو.رد شده(کارخواه):
سرچاپ "سرور ما را نپذیرفت:"، سوکتآیاو.دلیل رد(کارخواه)
برگشت ۱
پایان
اگر وارونه سوکتآیاو.متصل است(کارخواه):
سرچاپ "اتصال برقرار نشد:"، سوکتآیاو.آخرین خطا(کارخواه)
برگشت ۱
پایان
سرچاپ "وصل شد با شناسه"، سوکتآیاو.شناسه(کارخواه)، "روی"، سوکتآیاو.نام حملونقل(کارخواه)
سوکتآیاو.بستن(کارخواه)
برگشت ۰
پایاناین برنامه به یک سرور در حال اجرا نیاز دارد، پس اینجا فقط بررسی میشود. در یک سرور Node.js بررسی متناظر یک io.use((socket, next) => ...) است که socket.handshake.auth.token را میخواند و برای رد کردن next(new Error("...")) را صدا میزند.
تأیید در هر دو جهت
تأیید (acknowledgement) همان درخواست و پاسخ در Socket.IO است: فرستنده به رویداد شماره میدهد و طرف دیگر به همان شماره پاسخ میدهد. ارسال منتظر تایید رویدادی میفرستد و تا زمانی که میدهید منتظر پاسخ سرور میماند؛ اگر بهموقع نرسد ok نادرست است. در جهت دیگر، وقتی سرور رویدادی با شناسه میفرستد، ack_id رویداد آن را نگه میدارد و پاسخ، پاسخ رشته یا پاسخ جیسون به آن جواب میدهد. سرور ساختگی زیر هر دو بسته را روی سیم نشان میدهد: 420[...] رویداد کارخواه با شناسهی تأیید ۰ است و 4317["بله"] پاسخ کارخواه به شناسهی ۱۷ سرور.
واردسازی شبکه.سوکتآیاو
واردسازی شبکه.وبسوکت
واردسازی کدگذاری.جیسون
ناپایا سرور من := وبسوکت.سرور {}
ناپایا دیدهها := وکتور {} برگردان وکتور<رشته>
تابع سرور ساختگی():
ناپایا ا := وبسوکت.پذیرش(سرور من)
_ := وبسوکت.ارسال متن(ا، `0{"sid":"s1","upgrades":[],"pingInterval":20000,"pingTimeout":5000}`)
اگر وبسوکت.دریافت متن(ا) != "40": برگشت پایان
_ := وبسوکت.ارسال متن(ا، `40{"sid":"a1"}`)
دیدهها.بیفزا(وبسوکت.دریافت متن(ا))
_ := وبسوکت.ارسال متن(ا، `430[{"ok":true,"members":3}]`)
_ := وبسوکت.ارسال متن(ا، `4217["تأیید","سفارش ۱۰۴۲"]`)
دیدهها.بیفزا(وبسوکت.دریافت متن(ا))
_ := وبسوکت.ارسال متن(ا، "41")
_ := وبسوکت.دریافت با مهلت(ا، ۱۰۰۰)
وبسوکت.بستن(ا)
پایان
تابع ریشه:
سرور من = وبسوکت.شنود(۰)
نخ := نخساز(سرور ساختگی)
ناپایا گزینه := سوکتآیاو.گزینههای جدید()
گزینه.حملونقل = سوکتآیاو.حملونقل وبسوکت
گزینه.اتصال دوباره = نادرست
کارخواه := سوکتآیاو.اتصال با("http://127.0.0.1:" + وبسوکت.درگاه(سرور من)، گزینه)
ناپایا آرگها := سوکتآیاو.آرگومان جدید()
سوکتآیاو.افزودن رشته(آرگها، "اتاق-۱")
ناپایا پاسخ سرور := سوکتآیاو.ارسال منتظر تایید(کارخواه، "پیوستن"، آرگها، ۲۰۰۰)
سوکتآیاو.آزادسازی آرگومان(آرگها)
سرچاپ "پاسخ پیوستن:"، پاسخ سرور.رسیده، "اعضا:"، جیسون.دریافت عدد(سوکتآیاو.آرگومان تایید(پاسخ سرور، ۰)، "members")
سوکتآیاو.آزادسازی تایید(پاسخ سرور)
ناپایا ادامه := درست
تا ادامه:
رخداد := سوکتآیاو.بعدی(کارخواه، ۳۰۰۰)
اگر رخداد.نوع برابر سوکتآیاو.رویداد پیام و رخداد.نام برابر "تأیید":
سرچاپ "سرور میپرسد:"، سوکتآیاو.آرگومان رشته(رخداد، ۰)، "شناسهی تایید"، رخداد.شماره تایید
_ := سوکتآیاو.پاسخ رشته(رخداد، "بله")
وگرنه رخداد.نوع برابر سوکتآیاو.رویداد قطع یا رخداد.نوع برابر سوکتآیاو.رویداد مهلت:
ادامه = نادرست
پایان
پایان
سوکتآیاو.بستن(کارخواه)
نخپیوند(نخ)
وبسوکت.بستن سرور(سرور من)
سرچاپ "سرور دید:"
هر سطر در دیدهها: سرچاپ " "، سطر پایان
پایانبه هر رویداد تأییدخواه یک بار پاسخ دهید. سرورها معمولاً روی emitWithAck خودشان مهلت میگذارند، پس پیش از شروع کار کند پاسخ دهید، یا با وضعیت «شروع شد» پاسخ دهید و نتیجه را جدا به شکل یک رویداد بفرستید.
رباتی که وصل میماند
یک کارخواه بلندمدت به اتاقی میپیوندد، به برخی پیامها پاسخ میدهد و از مشکلات شبکه جان سالم به در میبرد. ارسال منتظر تایید رویدادی میفرستد و منتظر پاسخ سرور میماند و از همین راه میفهمید پیوستن انجام شده است. سپس اجرا تا بسته شدن کارخواه به رویدادها رسیدگی میکند و پس از قطع اتصال خودش دوباره وصل میشود؛ reconnection_delay میلیثانیه صبر میکند و هر بار بیشتر، تا reconnection_delay_max. شنوندههای disconnect و reconnect اجازه میدهند هر دو را ثبت کنید.
واردسازی شبکه.سوکتآیاو
واردسازی رشته
ناپایا کارخواه := سوکتآیاو.کارخواه {}
تابع ریشه:
ناپایا گزینه := سوکتآیاو.گزینههای جدید()
گزینه.تعداد کوشش اتصال دوباره = ۱۰
گزینه.تاخیر اتصال دوباره = ۲۰۰۰
کارخواه = سوکتآیاو.اتصال با("http://localhost:3000"، گزینه)
اگر وارونه سوکتآیاو.متصل است(کارخواه):
سرچاپ "به گفتگو دسترسی نیست:"، سوکتآیاو.آخرین خطا(کارخواه)
برگشت ۱
پایان
ناپایا آرگومانها := سوکتآیاو.آرگومان جدید()
سوکتآیاو.افزودن رشته(آرگومانها، "support")
ناپایا تایید := سوکتآیاو.ارسال منتظر تایید(کارخواه، "join"، آرگومانها، ۵۰۰۰)
سوکتآیاو.آزادسازی آرگومان(آرگومانها)
اگر وارونه تایید.رسیده:
سرچاپ "پیوستن به اتاق از مهلت گذشت"
برگشت ۱
پایان
سرچاپ "به اتاق پشتیبانی پیوستیم، شمار اعضا:"، سوکتآیاو.عدد تایید(تایید، ۰)
سوکتآیاو.آزادسازی تایید(تایید)
سوکتآیاو.روی(کارخواه، "message"، (رخداد: سوکتآیاو.رویداد):
متن := سوکتآیاو.آرگومان رشته(رخداد، ۱)
اگر رشته.شروع با(متن، "!time"):
_ := سوکتآیاو.ارسال رشته(کارخواه، "message"، "ساعت کاری ۹ تا ۱۷ است")
پایان
پایان)
سوکتآیاو.روی(کارخواه، "disconnect"، (رخداد: سوکتآیاو.رویداد):
سرچاپ "اتصال از دست رفت:"، رخداد.پیام
پایان)
سوکتآیاو.روی(کارخواه، "reconnect"، (رخداد: سوکتآیاو.رویداد):
_ := رخداد
سرچاپ "برگشتیم پس از"، سوکتآیاو.تلاشها(کارخواه)، "تلاش"
پایان)
سوکتآیاو.اجرا(کارخواه)
برگشت ۰
پایانرباتی که فقط به رویدادها واکنش نشان میدهد میتواند تمام عمرش در اجرا بماند؛ این تابع وقتی بستن صدا زده شود یا اتصال دوباره ناامید شود برمیگردد.
کدام راه برای دریافت
| وضعیت | تابع |
|---|---|
| برنامه فقط به رویدادها واکنش نشان میدهد | شنوندههای روی و اجرا |
| آزمون یا اسکریپتی که مدتی کار میکند و تمام میشود | اجرا برای |
| حلقهی اصلی خودتان، با کارهای دیگر میان رویدادها | پمپ با مهلت کوتاه، یک بار در هر دور حلقه |
| هر بار یک رویداد، به ترتیب، بدون تابع بازگشتی | بعدی |
| چند فضای نام روی یک اتصال | مدیر جدید، از، سپس پمپ مدیر |
گونهها
بایتها Bytes
ساختار بایتها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| اشارهگر | ptr | تهی* | اشارهگر. |
| طول | len | صحیح = 0 | طول. |
واردسازی شبکه.سوکتآیاو
تابع ریشه:
ناپایا ب := سوکتآیاو.بایت از رشته("Salam")
سرچاپ ب.طول، سوکتآیاو.بایت در(ب، ۰)
سرچاپ سوکتآیاو.بایت به رشته(ب)
سرچاپ سوکتآیاو.بایت به بیس۶۴(ب)
سوکتآیاو.آزادسازی بایت(ب)
ناپایا ک := سوکتآیاو.بایت جدید("hello" برگردان تهی*، ۴)
سرچاپ سوکتآیاو.بایت به رشته(ک)
سوکتآیاو.آزادسازی بایت(ک)
ناپایا آ := سوکتآیاو.آرگومان جدید()
سوکتآیاو.افزودن رشته(آ، "file.txt")
سوکتآیاو.افزودن رشته دودویی(آ، "abc")
سرچاپ سوکتآیاو.جیسون آرگومان(آ، "upload")
سرچاپ آ.بخشهای دودویی.طول()
سوکتآیاو.آزادسازی آرگومان(آ)
پایانبسته Packet
ساختار بسته| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| نوع | kind | صحیح = -1 | نوع. |
| فضای نام | nsp | رشته = "/" | فضای نام. |
| شماره تایید | id | صحیح = -1 | شمارهی تایید؛ ۱- یعنی بدون تایید. |
| داده | data | رشته = "" | داده به شکل جیسون. |
| پیوستها | attachments | صحیح = 0 | شمار بخشهای دودویی. |
| خواندهشده | ok | منطقی = نادرست | بسته درست خوانده شد. |
واردسازی شبکه.سوکتآیاو
تابع ریشه:
ناپایا ب := سوکتآیاو.بسته {}
ب.نوع = سوکتآیاو.بسته رویداد
ب.فضای نام = "/chat"
ب.شماره تایید = ۷
ب.داده = `["hi",1]`
متن := سوکتآیاو.رمزگذاری بسته(ب)
سرچاپ متن
د := سوکتآیاو.رمزگشایی بسته(متن)
سرچاپ د.خواندهشده، د.نوع، د.فضای نام، د.شماره تایید، د.داده
خطا := سوکتآیاو.رمزگشایی بسته("x")
سرچاپ خطا.خواندهشده
بار := سوکتآیاو.رمزگذاری موتور(سوکتآیاو.پیام موتور، متن)
سرچاپ بار
سرچاپ سوکتآیاو.نوع موتور(بار) == سوکتآیاو.پیام موتور
سرچاپ سوکتآیاو.بدنه موتور(بار)
ناپایا فهرست := وکتور {} برگردان وکتور<رشته>
فهرست.افزودن("2")
فهرست.افزودن(بار)
بدنه := سوکتآیاو.پیوستن بارها(فهرست)
تکهها := سوکتآیاو.جداسازی بارها(بدنه)
سرچاپ تکهها.طول()، تکهها.دریافت(۰)، تکهها.دریافت(۱)
آرایه := سوکتآیاو.جداسازی آرایه جیسون(`["a", {"b":[1,2]}, 3]`)
سرچاپ آرایه.طول()، آرایه.دریافت(۱)
ج := سوکتآیاو.جانگهدار(۰)
سرچاپ ج
سرچاپ سوکتآیاو.شماره جانگهدار(ج)، سوکتآیاو.شماره جانگهدار("12")
پایانمشخصات نقطه پایانی Endpoint
ساختار مشخصات نقطه پایانی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| امن | secure | منطقی = نادرست | HTTPS یا WSS. |
| میزبان | host | رشته = "localhost" | میزبان. |
| درگاه | port | صحیح = 80 | درگاه؛ اگر نیامده، ۸۰ یا ۴۴۳. |
| مسیر | path | رشته = "/socket.io" | مسیر Socket.IO. |
| فضای نام | namespace | رشته = "/" | فضای نام، از مسیر نشانی. |
| پرسمان | query | رشته = "" | پرسوجو. |
| معتبر | ok | منطقی = نادرست | نشانی معتبر است. |
واردسازی شبکه.سوکتآیاو
تابع نمایش(نشانی: رشته):
ن := سوکتآیاو.تجزیه نشانی(نشانی)
اگر وارونه ن.معتبر:
سرچاپ نشانی، "نامعتبر"
برگشت
پایان
سرچاپ ن.میزبان، ن.درگاه، ن.امن، ن.فضای نام، "پرسوجو=" + ن.پرسمان
سرچاپ سوکتآیاو.مبدا(ن)
پایان
تابع ریشه:
نمایش("http://localhost:3000")
نمایش("https://example.com/admin/?token=abc")
نمایش("ws://[::1]:8080/chat")
نمایش("ftp://example.com")
پایانآرگومانها Args
ساختار آرگومانها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| آرگومانها | items | وکتور<رشته> | آرگومانها به شکل جیسون. |
| بخشهای دودویی | bins | وکتور<بایتها> | بخشهای دودویی. |
واردسازی شبکه.سوکتآیاو
واردسازی کدگذاری.مقدار
تابع ریشه:
ناپایا آ := سوکتآیاو.آرگومان جدید()
سوکتآیاو.افزودن رشته(آ، "سلام \"دنیا\"")
سوکتآیاو.افزودن عدد(آ، ۴۲)
سوکتآیاو.افزودن اعشاری(آ، ۲.۵)
سوکتآیاو.افزودن بولی(آ، درست)
سوکتآیاو.افزودن تهی(آ)
سوکتآیاو.افزودن جیسون(آ، `{"x":1}`)
سرچاپ سوکتآیاو.شمار آرگومان(آ)
متن := سوکتآیاو.جیسون آرگومان(آ، "پیام")
سرچاپ متن
سرچاپ سوکتآیاو.شمار عنصر(متن)
سرچاپ سوکتآیاو.عنصر رشتهای(متن، ۱)
سرچاپ سوکتآیاو.عنصر عددی(متن، ۲)
سرچاپ سوکتآیاو.عنصر اعشاری(متن، ۳)
سرچاپ سوکتآیاو.عنصر بولی(متن، ۴)
سرچاپ سوکتآیاو.عنصر(متن، ۶)
سرچاپ سوکتآیاو.عنصر(متن، ۹).طول()
سوکتآیاو.آزادسازی آرگومان(آ)
ناپایا م := سوکتآیاو.مقدار عنصر(متن، ۲)
سرچاپ مقدار.عدد است(م)، مقدار.به صحیح(م)
ناپایا آ۲ := سوکتآیاو.آرگومان جدید()
سوکتآیاو.افزودن مقدار(آ۲، م)
سوکتآیاو.افزودن بایت(آ۲، "xyz" برگردان تهی*، ۳)
سرچاپ سوکتآیاو.جیسون آرگومان(آ۲، "")
سوکتآیاو.آزادسازی آرگومان(آ۲)
مقدار.آزادسازی مقدار(م)
پایانگزینهها Options
ساختار گزینهها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| مسیر | path | رشته = "/socket.io" | مسیر سرور Socket.IO. |
| پرسمان | query | رشته = "" | پرسوجوی اضافه برای نشانی. |
| احراز هویت | auth | رشته = "" | دادهی احراز هویت به شکل جیسون که با اتصال به فضای نام فرستاده میشود. |
| سرآیندها | headers | رشته = "" | سرآیندهای اضافهی HTTP، هر کدام در یک خط. |
| حملونقل | transports | صحیح | حملونقل، یکی از ثابتهای حملونقل .... |
| اتصال دوباره | reconnection | منطقی = درست | پس از قطع، خودکار دوباره وصل شود. |
| تعداد کوشش اتصال دوباره | reconnection_attempts | صحیح = 0 | بیشترین تلاش؛ صفر یعنی بیحد. |
| تاخیر اتصال دوباره | reconnection_delay | صحیح = 1000 | تاخیر نخستین تلاش بر حسب میلیثانیه؛ هر بار دو برابر میشود. |
| بیشترین تاخیر اتصال دوباره | reconnection_delay_max | صحیح = 5000 | بیشترین تاخیر. |
| ضریب تصادفی | randomization_factor | صحیح = 50 | درصد تصادفی که به تاخیر افزوده یا از آن کم میشود تا همهی کارخواهها همزمان برنگردند. |
| مهلت | timeout | صحیح = 20000 | مهلت اتصال بر حسب میلیثانیه. |
| ناامن | insecure | منطقی = نادرست | گواهی TLS بررسی نشود؛ فقط برای آزمایش. |
| اتصال خودکار | auto_connect | منطقی = درست | کارخواه بیدرنگ وصل شود. |
| صف رویداد | event_queue | صحیح = 256 | بیشترین تعداد رویدادی که بعدی منتظر نگه میدارد؛ وقتی پر شود قدیمیترین دور ریخته میشود. |
| مهلت تایید | ack_timeout | صحیح = 0 | مهلت تأیید به میلیثانیه، وقتی به ارسال منتظر تایید صفر داده شود. |
| کوشش دوباره | retries | صحیح = 0 | شمار تلاش دوباره برای پیامهایی که تایید نگرفتند. |
| اسلش پایانی | trailing_slash | منطقی = درست | به انتهای مسیر اسلش افزوده شود، مثل کارخواه جاوااسکریپت. |
| به خاطر سپردن ارتقا | remember_upgrade | منطقی = نادرست | اگر ارتقا به وبسوکت یک بار جواب داد، دفعهی بعد مستقیم وبسوکت. |
واردسازی شبکه.سوکتآیاو
تابع ریشه:
ناپایا گ := سوکتآیاو.گزینههای جدید()
سرچاپ گ.مسیر، گ.اتصال دوباره، گ.تاخیر اتصال دوباره، گ.مهلت
سرچاپ گ.حملونقل == سوکتآیاو.حملونقل خودکار
گ.حملونقل = سوکتآیاو.حملونقل وبسوکت
گ.احراز هویت = `{"token":"abc"}`
گ.اتصال خودکار = نادرست
سرچاپ گ.حملونقل، گ.احراز هویت، گ.اتصال خودکار
سرچاپ سوکتآیاو.حملونقل نظرخواهی، سوکتآیاو.قطع توسط سرور، سوکتآیاو.دلیل مهلت پینگ
سرچاپ سوکتآیاو.پمپ موفق، سوکتآیاو.پمپ مهلت، سوکتآیاو.پمپ بسته
پایانکارخواه Client
ساختار کارخواه| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| اشارهگر داخلی | p | تهی* | اشارهگر داخلی. |
واردسازی شبکه.سوکتآیاو
واردسازی شبکه.وبسوکت
واردسازی رشته
ناپایا سرور := وبسوکت.سرور {}
ناپایا گزارش := ""
تابع سرور آزمایشی():
ناپایا ا := وبسوکت.پذیرش(سرور)
_ := وبسوکت.ارسال متن(ا، `0{"sid":"s1","upgrades":[],"pingInterval":20000,"pingTimeout":5000}`)
ناپایا ادامه := درست
تا ادامه:
پ := وبسوکت.دریافت با مهلت(ا، ۳۰۰۰)
اگر پ.نوع != وبسوکت.متن:
بشکن
پایان
بستهی سوکت := پ.متن.زیررشته(۱، پ.متن.طول() - ۱)
اگر بستهی سوکت == "0":
_ := وبسوکت.ارسال متن(ا، `40{"sid":"a1"}`)
وگرنه رشته.شروع با(بستهی سوکت، `2["chat"`):
_ := وبسوکت.ارسال متن(ا، `42["chat","خوش آمدی"]`)
_ := وبسوکت.ارسال متن(ا، `429["question","2+2"]`)
وگرنه رشته.شامل است(بستهی سوکت، `"add"`):
شناسه := بستهی سوکت.زیررشته(۱، رشته.یافتن(بستهی سوکت، "[") - ۱)
_ := وبسوکت.ارسال متن(ا، "43" + شناسه + "[5]")
وگرنه رشته.شروع با(بستهی سوکت، "39"):
گزارش += "پاسخ: " + بستهی سوکت.زیررشته(۲، بستهی سوکت.طول() - ۲)
وگرنه بستهی سوکت == "1":
ادامه = نادرست
پایان
پایان
وبسوکت.بستن(ا)
پایان
تابع ریشه:
سرور = وبسوکت.شنود(۰)
ن := نخساز(سرور آزمایشی)
ناپایا گ := سوکتآیاو.گزینههای جدید()
گ.حملونقل = سوکتآیاو.حملونقل وبسوکت
گ.اتصال دوباره = نادرست
ک := سوکتآیاو.اتصال با("http://127.0.0.1:" + وبسوکت.درگاه(سرور)، گ)
سرچاپ سوکتآیاو.متصل است(ک)، سوکتآیاو.شناسه نشست(ک)، سوکتآیاو.شناسه(ک)، سوکتآیاو.فضای نام(ک)، سوکتآیاو.نام حملونقل(ک)
سوکتآیاو.روی(ک، "chat"، (ر: سوکتآیاو.رویداد):
سرچاپ "پیام:"، سوکتآیاو.آرگومان رشته(ر، ۰)
پایان)
سوکتآیاو.روی(ک، "question"، (ر: سوکتآیاو.رویداد):
سرچاپ "پرسش:"، سوکتآیاو.آرگومان رشته(ر، ۰)، ر.شماره تایید >= ۰
_ := سوکتآیاو.پاسخ رشته(ر، "چهار")
پایان)
سرچاپ سوکتآیاو.شمار شنونده(ک، "chat")، سوکتآیاو.شنونده دارد(ک، "news")
_ := سوکتآیاو.ارسال رشته(ک، "chat"، "سلام")
سوکتآیاو.اجرا برای(ک، ۵۰۰)
ناپایا آ := سوکتآیاو.آرگومان جدید()
سوکتآیاو.افزودن عدد(آ، ۲)
سوکتآیاو.افزودن عدد(آ، ۳)
ناپایا ت := سوکتآیاو.ارسال منتظر تایید(ک، "add"، آ، ۲۰۰۰)
سرچاپ ت.رسیده، سوکتآیاو.عدد تایید(ت، ۰)
سوکتآیاو.آزادسازی تایید(ت)
سوکتآیاو.آزادسازی آرگومان(آ)
سوکتآیاو.بستن(ک)
نخپیوند(ن)
وبسوکت.بستن سرور(سرور)
سرچاپ گزارش
پایانمدیر Manager
ساختار مدیر| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| اشارهگر داخلی | p | تهی* | اشارهگر داخلی. |
واردسازی شبکه.سوکتآیاو
تابع ریشه:
ناپایا گ := سوکتآیاو.گزینههای جدید()
گ.احراز هویت = `{"token":"abc"}`
گ.اتصال خودکار = نادرست
م := سوکتآیاو.مدیر جدید("https://example.com"، گ)
سوکتآیاو.تنظیم اتصال دوباره(م، درست)
سوکتآیاو.تنظیم شمار اتصال دوباره(م، ۵)
سوکتآیاو.تنظیم تاخیر دوباره(م، ۵۰۰)
سوکتآیاو.تنظیم بیشینه تاخیر(م، ۱۰۰۰۰)
سوکتآیاو.تنظیم ضریب تصادفی(م، ۲۰)
سوکتآیاو.تنظیم مهلت(م، ۵۰۰۰)
سرچاپ سوکتآیاو.گزینههای مدیر(م).تعداد کوشش اتصال دوباره
عمومی := سوکتآیاو.از(م، "/")
مدیریت := سوکتآیاو.از(م، "/admin")
سوکتآیاو.تنظیم احراز(مدیریت، `{"role":"admin"}`)
سرچاپ سوکتآیاو.احراز(مدیریت)، سوکتآیاو.سوکتها(م).طول()
اگر وارونه سوکتآیاو.باز کردن(م):
سرچاپ "خطا:"، سوکتآیاو.خطای مدیر(م)
برگشت
پایان
سرچاپ سوکتآیاو.باز است(م)
_ := سوکتآیاو.وصل شدن(عمومی)
_ := سوکتآیاو.وصل شدن(مدیریت)
اگر سوکتآیاو.رد شده(مدیریت):
سرچاپ "رد شد:"، سوکتآیاو.دلیل رد(مدیریت)
پایان
سرچاپ سوکتآیاو.فعال(عمومی)، سوکتآیاو.قطع شده(عمومی)، سوکتآیاو.بازیابی شده(عمومی)
سرچاپ سوکتآیاو.حملونقل(عمومی)، سوکتآیاو.بازه پینگ(عمومی)، سوکتآیاو.مهلت پینگ(عمومی)، سوکتآیاو.بیشینه بار(عمومی)
سرچاپ سوکتآیاو.بافر شده(عمومی)، سوکتآیاو.در انتظار(عمومی)، سوکتآیاو.در صف(عمومی)، سوکتآیاو.تلاشها(عمومی)
سرچاپ سوکتآیاو.نقطه پایانی(عمومی).میزبان، سوکتآیاو.مدیر کلاینت(عمومی).اشارهگر داخلی == م.اشارهگر داخلی
_ := سوکتآیاو.پمپ مدیر(م، ۱۰۰۰)
سوکتآیاو.قطع اتصال(مدیریت)
سوکتآیاو.بستن مدیر(م)
پایانرویداد Event
ساختار رویداد| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| نوع | kind | صحیح | نوع رویداد. |
| نام | name | رشته = "" | نام رویداد. |
| فضای نام | nsp | رشته = "/" | فضای نام. |
| داده | data | رشته = "[]" | آرگومانها به شکل آرایهی جیسون. |
| شماره تایید | ack_id | صحیح = -1 | اگر فرستنده تایید میخواهد، شمارهی آن؛ وگرنه ۱-. |
| پیام | message | رشته = "" | برای رویدادهای خطا و قطع، توضیح. |
| بخشهای دودویی | bins | وکتور<بایتها> | بخشهای دودویی. |
| کارخواه | client | کارخواه | سوکتی که رویداد را گرفت. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
تایید Ack
ساختار تایید| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| رسیده | ok | منطقی = نادرست | پاسخ پیش از مهلت رسید. |
| شماره تایید | id | صحیح = -1 | شمارهی تایید. |
| داده | data | رشته = "[]" | آرگومانها به شکل آرایهی جیسون. |
| بخشهای دودویی | bins | وکتور<بایتها> | بخشهای دودویی. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
پایاها و متغیرها
نوع بستههای موتور EIO_…
| نام | انگلیسی | مقدار |
|---|---|---|
| باز کردن موتور | EIO_OPEN | 0 |
| بستن موتور | EIO_CLOSE | 1 |
| پینگ موتور | EIO_PING | 2 |
| پونگ موتور | EIO_PONG | 3 |
| پیام موتور | EIO_MESSAGE | 4 |
| ارتقای موتور | EIO_UPGRADE | 5 |
| بیکار موتور | EIO_NOOP | 6 |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
نوع بستههای سوکتآیاو PKT_…
| نام | انگلیسی | مقدار |
|---|---|---|
| بسته اتصال | PKT_CONNECT | 0 |
| بسته قطع اتصال | PKT_DISCONNECT | 1 |
| بسته رویداد | PKT_EVENT | 2 |
| بسته تایید | PKT_ACK | 3 |
| خطای اتصال | PKT_CONNECT_ERROR | 4 |
| رویداد دودویی | PKT_BINARY_EVENT | 5 |
| تایید دودویی | PKT_BINARY_ACK | 6 |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
حملونقل خودکار TRANSPORT_AUTO
پایا حملونقل خودکار: صحیح۳۲ = 0نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Options.salam
حملونقل وبسوکت TRANSPORT_WEBSOCKET
پایا حملونقل وبسوکت: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
حملونقل نظرخواهی TRANSPORT_POLLING
پایا حملونقل نظرخواهی: صحیح۳۲ = 2نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Options.salam
نوع رویدادها EV_…
kind در رویدادی که بعدی برمیگرداند. رویداد پیام همان پیامهای سرورند؛ بقیه از خود اتصال خبر میدهند: وصل و قطع شدن، خطا، تلاشهای اتصال دوباره، پینگ، مهلت و ارتقا به وبسوکت. شنوندهها با نام انگلیسی این رویدادها صدا زده میشوند، مثل connect و disconnect.| نام | انگلیسی | مقدار |
|---|---|---|
| بدون رویداد | EV_NONE | 0 |
| رویداد پیام | EV_EVENT | 1 |
| رویداد اتصال | EV_CONNECT | 2 |
| رویداد قطع | EV_DISCONNECT | 3 |
| رویداد خطای اتصال | EV_CONNECT_ERROR | 4 |
| رویداد خطا | EV_ERROR | 5 |
| رویداد اتصال دوباره | EV_RECONNECT | 6 |
| رویداد کوشش دوباره | EV_RECONNECT_ATTEMPT | 7 |
| رویداد خطای دوباره | EV_RECONNECT_ERROR | 8 |
| رویداد شکست دوباره | EV_RECONNECT_FAILED | 9 |
| رویداد پینگ | EV_PING | 10 |
| رویداد مهلت | EV_TIMEOUT | 11 |
| رویداد ارتقا | EV_UPGRADE | 12 |
واردسازی شبکه.سوکتآیاو
واردسازی کدگذاری.مقدار
تابع ریشه:
ک := سوکتآیاو.اتصال("http://localhost:3000")
اگر وارونه سوکتآیاو.متصل است(ک):
سرچاپ سوکتآیاو.آخرین خطا(ک)
برگشت
پایان
سوکتآیاو.روی دلخواه(ک، (ر: سوکتآیاو.رویداد):
سرچاپ "رسید:"، ر.نام، سوکتآیاو.شمار آرگومان رویداد(ر)
پایان)
سوکتآیاو.یکبار(ک، "welcome"، (ر: سوکتآیاو.رویداد):
سرچاپ سوکتآیاو.آرگومان(ر، ۰)
پایان)
سوکتآیاو.روی دلخواه خروجی(ک، (ر: سوکتآیاو.رویداد):
سرچاپ "فرستاده شد:"، ر.نام
پایان)
سوکتآیاو.پیشافزودن دلخواه(ک، (ر: سوکتآیاو.رویداد):
سرچاپ "پیش از همه:"، ر.نام
پایان)
سوکتآیاو.پیشافزودن دلخواه خروجی(ک، (ر: سوکتآیاو.رویداد):
سرچاپ "در حال فرستادن:"، ر.نام
پایان)
سرچاپ سوکتآیاو.شمار شنونده دلخواه(ک)
_ := سوکتآیاو.ارسال(ک، "ping")
_ := سوکتآیاو.ارسال عدد(ک، "score"، ۱۲)
_ := سوکتآیاو.ارسال اعشاری(ک، "temp"، ۲۱.۵)
_ := سوکتآیاو.ارسال بولی(ک، "ready"، درست)
_ := سوکتآیاو.ارسال جیسون(ک، "user"، `{"name":"علی"}`)
_ := سوکتآیاو.ارسال بایت(ک، "file"، "abc" برگردان تهی*، ۳)
_ := سوکتآیاو.فرستادن(ک، "یک پیام ساده")
ناپایا آ := سوکتآیاو.آرگومان جدید()
سوکتآیاو.افزودن رشته(آ، "room-1")
_ := سوکتآیاو.ارسال با آرگومان(ک، "join"، آ)
_ := سوکتآیاو.ارسال ناپایدار(ک، "cursor"، آ)
_ := سوکتآیاو.ارسال با تایید(ک، "join"، آ، ۲۰۰۰، (ت: سوکتآیاو.تایید):
سرچاپ ت.رسیده، سوکتآیاو.شمار تایید(ت)، سوکتآیاو.رشته تایید(ت، ۰)
سرچاپ سوکتآیاو.آرگومان تایید(ت، ۱)، سوکتآیاو.اعشار تایید(ت، ۱)، سوکتآیاو.بولی تایید(ت، ۲)
اگر سوکتآیاو.تایید دودویی است(ت، ۳):
سرچاپ سوکتآیاو.بایت تایید(ت، ۳).طول
پایان
ناپایا م := سوکتآیاو.مقدار تایید(ت، ۰)
مقدار.آزادسازی مقدار(م)
پایان)
سوکتآیاو.آزادسازی آرگومان(آ)
ناپایا ر := سوکتآیاو.بعدی(ک، ۵۰۰۰)
اگر ر.نوع == سوکتآیاو.رویداد پیام:
سرچاپ سوکتآیاو.آرگومان عددی(ر، ۰)، سوکتآیاو.آرگومان اعشاری(ر، ۱)، سوکتآیاو.آرگومان بولی(ر، ۲)
اگر سوکتآیاو.آرگومان دودویی است(ر، ۳):
ب := سوکتآیاو.آرگومان بایتی(ر، ۳)
سرچاپ ب.طول
پایان
اگر ر.شماره تایید >= ۰:
_ := سوکتآیاو.پاسخ جیسون(ر، `{"ok":true}`)
پایان
وگرنه ر.نوع == سوکتآیاو.رویداد قطع:
سرچاپ "قطع شد:"، ر.پیام
پایان
سوکتآیاو.آزادسازی رویداد(ر)
ناپایا ر۲ := سوکتآیاو.رویداد بعدی(ک، ۵۰۰۰)
ناپایا م۲ := سوکتآیاو.مقدار آرگومان(ر۲، ۰)
سرچاپ مقدار.عدد است(م۲)
مقدار.آزادسازی مقدار(م۲)
سوکتآیاو.آزادسازی رویداد(ر۲)
_ := سوکتآیاو.پمپ(ک، ۱۰۰)
سوکتآیاو.خاموش(ک، "welcome")
سوکتآیاو.خاموش دلخواه(ک)
سوکتآیاو.خاموش دلخواه خروجی(ک)
سوکتآیاو.خاموش همه(ک)
سوکتآیاو.اجرا(ک)
پایاندلیلهای قطع اتصال REASON_…
message رویداد قطع میآید و میگوید اتصال چرا قطع شد: سرور یا خود برنامه آن را بست، پینگ بهموقع نرسید، حملونقل بسته شد یا خطا داد، یا بستهای خوانده نشد.| نام | انگلیسی | مقدار |
|---|---|---|
| قطع توسط سرور | REASON_SERVER_DISCONNECT | "io server disconnect" |
| قطع توسط کارخواه | REASON_CLIENT_DISCONNECT | "io client disconnect" |
| دلیل مهلت پینگ | REASON_PING_TIMEOUT | "ping timeout" |
| بسته شدن حملونقل | REASON_TRANSPORT_CLOSE | "transport close" |
| خطای حملونقل | REASON_TRANSPORT_ERROR | "transport error" |
| خطای تجزیه | REASON_PARSE_ERROR | "parse error" |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Options.salam
نتیجههای پمپ PUMP_…
پمپ و پمپ مدیر: چیزی رسید و پردازش شد، مهلت تمام شد، یا اتصال بسته است.| نام | انگلیسی | مقدار |
|---|---|---|
| پمپ موفق | PUMP_OK | 0 |
| پمپ مهلت | PUMP_TIMEOUT | 1 |
| پمپ بسته | PUMP_CLOSED | 2 |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Options.salam
تابعها
رمزگذاری بسته EncodePacket
تابع رمزگذاری بسته(p: بسته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
رمزگشایی بسته DecodePacket
تابع رمزگشایی بسته(text: رشته): بستهok نادرست است.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
رمزگذاری موتور EncodeEngine
تابع رمزگذاری موتور(kind: صحیح، body: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
نوع موتور EngineKind
تابع نوع موتور(payload: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
بدنه موتور EngineBody
تابع بدنه موتور(payload: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
جداسازی بارها SplitPayloads
تابع جداسازی بارها(body: رشته): وکتور<رشته>نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
پیوستن بارها JoinPayloads
تابع پیوستن بارها(items: وکتور<رشته>): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
جداسازی آرایه جیسون SplitJSONArray
تابع جداسازی آرایه جیسون(text: رشته): وکتور<رشته>نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
جانگهدار Placeholder
تابع جانگهدار(num: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
شماره جانگهدار PlaceholderNum
تابع شماره جانگهدار(frag: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Packet.salam
بایت جدید NewBytes
تابع بایت جدید(ptr: تهی*، n: صحیح): بایتهانمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Bytes.salam
بایت از رشته BytesFromStr
تابع بایت از رشته(s: رشته): بایتهانمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Bytes.salam
بایت به رشته BytesToStr
تابع بایت به رشته(b: بایتها): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Bytes.salam
بایت به بیس۶۴ BytesToBase64
تابع بایت به بیس۶۴(b: بایتها): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Bytes.salam
بایت در BytesAt
تابع بایت در(b: بایتها، i: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Bytes.salam
آزادسازی بایت BytesFree
تابع آزادسازی بایت(b &: بایتها)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Bytes.salam
تجزیه نشانی ParseURL
تابع تجزیه نشانی(raw: رشته): مشخصات نقطه پایانیhttp، https، ws و wss پذیرفته میشوند.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-URL.salam
مبدا Origin
تابع مبدا(e: مشخصات نقطه پایانی): رشتهhttps://example.com؛ درگاه پیشفرض نوشته نمیشود.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-URL.salam
آرگومان جدید NewArgs
تابع آرگومان جدید(): آرگومانهانمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
افزودن رشته AddStr
تابع افزودن رشته(a &: آرگومانها، s: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
افزودن عدد AddInt
تابع افزودن عدد(a &: آرگومانها، n: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
افزودن اعشاری AddFloat
تابع افزودن اعشاری(a &: آرگومانها، n: اعشار۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
افزودن بولی AddBool
تابع افزودن بولی(a &: آرگومانها، b: منطقی)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
افزودن تهی AddNull
تابع افزودن تهی(a &: آرگومانها)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
افزودن جیسون AddJSON
تابع افزودن جیسون(a &: آرگومانها، raw: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
افزودن مقدار AddValue
تابع افزودن مقدار(a &: آرگومانها، v: value.Value)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
افزودن بایت AddBytes
تابع افزودن بایت(a &: آرگومانها، ptr: تهی*، n: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
افزودن رشته دودویی AddBinaryStr
تابع افزودن رشته دودویی(a &: آرگومانها، s: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Bytes.salam
شمار آرگومان ArgsCount
تابع شمار آرگومان(a: آرگومانها): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
آزادسازی آرگومان ArgsFree
تابع آزادسازی آرگومان(a &: آرگومانها)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
جیسون آرگومان ArgsJSON
تابع جیسون آرگومان(a: آرگومانها، name: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
شمار عنصر ItemCount
تابع شمار عنصر(raw: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
عنصر Item
تابع عنصر(raw: رشته، i: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
عنصر رشتهای ItemStr
تابع عنصر رشتهای(raw: رشته، i: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
عنصر عددی ItemInt
تابع عنصر عددی(raw: رشته، i: صحیح): صحیح۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
عنصر اعشاری ItemFloat
تابع عنصر اعشاری(raw: رشته، i: صحیح): اعشار۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
عنصر بولی ItemBool
تابع عنصر بولی(raw: رشته، i: صحیح): منطقیtrue درست حساب میشوند.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
مقدار عنصر ItemValue
تابع مقدار عنصر(raw: رشته، i: صحیح): value.Valueنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Args.salam
گزینههای جدید NewOptions
تابع گزینههای جدید(): گزینههانمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
مدیر جدید NewManager
تابع مدیر جدید(url: رشته، opts: گزینهها): مدیرنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
از Of
تابع از(m: مدیر، nsp: رشته): کارخواهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Bytes.salam
مدیر کلاینت ManagerOf
تابع مدیر کلاینت(c: کارخواه): مدیرنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
اتصال Dial
تابع اتصال(url: رشته): کارخواهآخرین خطا ببینید چرا.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
اتصال با DialWith
تابع اتصال با(url: رشته، opts: گزینهها): کارخواهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
وصل شدن Connect
تابع وصل شدن(c: کارخواه): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
قطع اتصال Disconnect
تابع قطع اتصال(c: کارخواه)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
بستن مدیر CloseManager
تابع بستن مدیر(m: مدیر)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
بستن Close
تابع بستن(c: کارخواه)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
پمپ Pump
تابع پمپ(c: کارخواه، timeout_ms: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Options.salam
پمپ مدیر PumpManager
تابع پمپ مدیر(m: مدیر، timeout_ms: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
بعدی Next
تابع بعدی(c: کارخواه، timeout_ms: صحیح): رویدادرویداد مهلت؛ مهلت منفی یعنی صبر بیپایان. شنوندهها هم صدا زده میشوند. صف با نخستین فراخوانی شروع میشود.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
رویداد بعدی NextEvent
تابع رویداد بعدی(c: کارخواه، timeout_ms: صحیح): رویدادنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
اجرا Run
تابع اجرا(c: کارخواه)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
اجرا برای RunFor
تابع اجرا برای(c: کارخواه، ms: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
روی On
تابع روی(c: کارخواه، name: رشته، cb: تابع(رویداد))نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
یکبار Once
تابع یکبار(c: کارخواه، name: رشته، cb: تابع(رویداد))نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
خاموش Off
تابع خاموش(c: کارخواه، name: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
خاموش همه OffAll
تابع خاموش همه(c: کارخواه)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
روی دلخواه OnAny
تابع روی دلخواه(c: کارخواه، cb: تابع(رویداد))نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
خاموش دلخواه OffAny
تابع خاموش دلخواه(c: کارخواه)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
ارسال با آرگومان EmitArgs
تابع ارسال با آرگومان(c: کارخواه، name: رشته، a: آرگومانها): منطقیconnect، رد میشوند.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
ارسال ناپایدار EmitVolatile
تابع ارسال ناپایدار(c: کارخواه، name: رشته، a: آرگومانها): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
ارسال Emit
تابع ارسال(c: کارخواه، name: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
ارسال رشته EmitStr
تابع ارسال رشته(c: کارخواه، name: رشته، s: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
ارسال عدد EmitInt
تابع ارسال عدد(c: کارخواه، name: رشته، n: صحیح۶۴): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
ارسال اعشاری EmitFloat
تابع ارسال اعشاری(c: کارخواه، name: رشته، n: اعشار۶۴): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
ارسال بولی EmitBool
تابع ارسال بولی(c: کارخواه، name: رشته، b: منطقی): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
ارسال جیسون EmitJSON
تابع ارسال جیسون(c: کارخواه، name: رشته، raw: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
ارسال بایت EmitBytes
تابع ارسال بایت(c: کارخواه، name: رشته، ptr: تهی*، n: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
ارسال منتظر تایید EmitAck
تابع ارسال منتظر تایید(c: کارخواه، name: رشته، a: آرگومانها، timeout_ms: صحیح): تاییدack_timeout و مقدار منفی یعنی صبر بیپایان. رویدادهای دیگری که در این میان برسند به شنوندهها میروند.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
ارسال با تایید EmitWithAck
تابع ارسال با تایید(c: کارخواه، name: رشته، a: آرگومانها، timeout_ms: صحیح، cb: تابع(تایید)): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
پاسخ Reply
تابع پاسخ(ev: رویداد، a: آرگومانها): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
پاسخ جیسون ReplyJSON
تابع پاسخ جیسون(ev: رویداد، raw: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
پاسخ رشته ReplyStr
تابع پاسخ رشته(ev: رویداد، s: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
شمار آرگومان رویداد ArgCount
تابع شمار آرگومان رویداد(ev: رویداد): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
آرگومان Arg
تابع آرگومان(ev: رویداد، i: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
آرگومان رشته ArgStr
تابع آرگومان رشته(ev: رویداد، i: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
آرگومان عددی ArgInt
تابع آرگومان عددی(ev: رویداد، i: صحیح): صحیح۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
آرگومان اعشاری ArgFloat
تابع آرگومان اعشاری(ev: رویداد، i: صحیح): اعشار۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
آرگومان بولی ArgBool
تابع آرگومان بولی(ev: رویداد، i: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
مقدار آرگومان ArgValue
تابع مقدار آرگومان(ev: رویداد، i: صحیح): value.Valueنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
آرگومان دودویی است ArgIsBinary
تابع آرگومان دودویی است(ev: رویداد، i: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
آرگومان بایتی ArgBytes
تابع آرگومان بایتی(ev: رویداد، i: صحیح): بایتهانمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
شمار تایید AckCount
تابع شمار تایید(a: تایید): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
آرگومان تایید AckArg
تابع آرگومان تایید(a: تایید، i: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
رشته تایید AckStr
تابع رشته تایید(a: تایید، i: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
عدد تایید AckInt
تابع عدد تایید(a: تایید، i: صحیح): صحیح۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
اعشار تایید AckFloat
تابع اعشار تایید(a: تایید، i: صحیح): اعشار۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
بولی تایید AckBool
تابع بولی تایید(a: تایید، i: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
تایید دودویی است AckIsBinary
تابع تایید دودویی است(a: تایید، i: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
بایت تایید AckBytes
تابع بایت تایید(a: تایید، i: صحیح): بایتهانمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
مقدار تایید AckValue
تابع مقدار تایید(a: تایید، i: صحیح): value.Valueنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
آزادسازی رویداد EventFree
تابع آزادسازی رویداد(ev &: رویداد)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
آزادسازی تایید AckFree
تابع آزادسازی تایید(a &: تایید)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
متصل است IsConnected
تابع متصل است(c: کارخواه): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
شناسه Id
تابع شناسه(c: کارخواه): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
شناسه نشست Sid
تابع شناسه نشست(c: کارخواه): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
فضای نام Namespace
تابع فضای نام(c: کارخواه): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
بازیابی شده Recovered
تابع بازیابی شده(c: کارخواه): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
حملونقل Transport
تابع حملونقل(c: کارخواه): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
آخرین خطا LastError
تابع آخرین خطا(c: کارخواه): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
بافر شده Buffered
تابع بافر شده(c: کارخواه): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
تلاشها Attempts
تابع تلاشها(c: کارخواه): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
نقطه پایانی EndpointOf
تابع نقطه پایانی(c: کارخواه): مشخصات نقطه پایانینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
فرستادن Send
تابع فرستادن(c: کارخواه، msg: رشته): منطقیmessage با یک رشته؛ مثل send در جاوااسکریپت.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
پیشافزودن دلخواه PrependAny
تابع پیشافزودن دلخواه(c: کارخواه، cb: تابع(رویداد))روی دلخواه، ولی پیش از بقیه صدا زده میشود.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
روی دلخواه خروجی OnAnyOutgoing
تابع روی دلخواه خروجی(c: کارخواه، cb: تابع(رویداد))نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
پیشافزودن دلخواه خروجی PrependAnyOutgoing
تابع پیشافزودن دلخواه خروجی(c: کارخواه، cb: تابع(رویداد))نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
خاموش دلخواه خروجی OffAnyOutgoing
تابع خاموش دلخواه خروجی(c: کارخواه)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
شمار شنونده ListenerCount
تابع شمار شنونده(c: کارخواه، name: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
شنونده دارد HasListeners
تابع شنونده دارد(c: کارخواه، name: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
شمار شنونده دلخواه AnyListenerCount
تابع شمار شنونده دلخواه(c: کارخواه): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Ack.salam
قطع شده Disconnected
تابع قطع شده(c: کارخواه): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
فعال Active
تابع فعال(c: کارخواه): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
در انتظار Pending
تابع در انتظار(c: کارخواه): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
در صف Queued
تابع در صف(c: کارخواه): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
نام حملونقل TransportName
تابع نام حملونقل(c: کارخواه): رشتهwebsocket یا polling.نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Client.salam
بازه پینگ PingInterval
تابع بازه پینگ(c: کارخواه): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
مهلت پینگ PingTimeout
تابع مهلت پینگ(c: کارخواه): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Options.salam
بیشینه بار MaxPayload
تابع بیشینه بار(c: کارخواه): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
تنظیم احراز SetAuth
تابع تنظیم احراز(c: کارخواه، auth json: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
احراز AuthOf
تابع احراز(c: کارخواه): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
تنظیم اتصال دوباره SetReconnection
تابع تنظیم اتصال دوباره(m: مدیر، enabled: منطقی)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
تنظیم شمار اتصال دوباره SetReconnectionAttempts
تابع تنظیم شمار اتصال دوباره(m: مدیر، n: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
تنظیم تاخیر دوباره SetReconnectionDelay
تابع تنظیم تاخیر دوباره(m: مدیر، ms: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
تنظیم بیشینه تاخیر SetReconnectionDelayMax
تابع تنظیم بیشینه تاخیر(m: مدیر، ms: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
تنظیم ضریب تصادفی SetRandomizationFactor
تابع تنظیم ضریب تصادفی(m: مدیر، percent: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
تنظیم مهلت SetTimeout
تابع تنظیم مهلت(m: مدیر، ms: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
گزینههای مدیر OptionsOf
تابع گزینههای مدیر(m: مدیر): گزینههانمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
سوکتها Sockets
تابع سوکتها(m: مدیر): وکتور<کارخواه>نمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
باز کردن Open
تابع باز کردن(m: مدیر): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
باز است IsOpen
تابع باز است(m: مدیر): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
خطای مدیر ManagerError
تابع خطای مدیر(m: مدیر): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
رد شده Refused
تابع رد شده(c: کارخواه): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam
دلیل رد RefusalReason
تابع دلیل رد(c: کارخواه): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-socketio-Manager.salam