لا يمكن لمكتبة فئة Socket.io إرسال رسائل إلى بعضها البعض فحسب ، بل يمكن أيضًا إرسال الأحداث إلى بعضها البعض من خلال طريقة SEIT لكائن منفذ المقبس.
قال Emit في الحدث السابق إنه يقول الآن: يتم استخدام EMIT لإطلاق الأحداث يدويًا.
نسخة الكود كما يلي:
Socket.emit (الحدث ، البيانات ، الوظيفة (Data1 ، Data2 ......) {
}) ؛
عند إرسال الأحداث باستخدام طريقة EMIT ، يمكنك استخدام طريقة ON من كائن منفذ المقبس على الطرف الآخر للاستماع إلى الطريقة ذات مرة.
نسخة الكود كما يلي:
Socket.on (الحدث ، الوظيفة (البيانات ، fn) {
}) ؛
Socket.once (الحدث ، الوظيفة (البيانات ، fn) {
})
بيانات المعلمة في وظيفة رد الاتصال أعلاه: البيانات التي تم نقلها في الحدث الذي أرسله الطرف الآخر ،
FN: وظيفة رد الاتصال على رد الاتصال المحدد من قبل الطرف الآخر عند إرسال حدث.
الحالة 1: بعد توصيل الخادم والعميل ، يتم إرسال حدث إخباري إلى العميل ، ويتم تنفيذ كائن في الحدث ، وقيمة سمة Hello للكائن "Hello". عندما يرسل العميل حدث الحدث الآخر الخاص بي ، يتم إخراج "الخادم الذي يتلقى البيانات" في وحدة التحكم + البيانات التي يتم حملها في العميل ترسل الحدث.
رمز من جانب الخادم ، server.js
نسخة الكود كما يلي:
var http = require ("http") ؛
var sio = required ("socket.io") ؛
var fs = require ("fs") ؛
var server = http.createserver (function (req ، res) {
Res.Writehead (200 ، {"content-type": "text/html"}) ؛
res.end (fs.readfilesync ("./ index.html")) ؛
}) ؛
server.listen (1337) ؛
var socket = sio.listen (server) ؛
Socket.on ("الاتصال" ، الدالة (المقبس) {
Socket.emit ("News" ، {Hello: "Hello"}) ؛
Socket.on ("حدث بلدي الآخر" ، وظيفة (البيانات) {
console.log ("الخادم يقبل المعلومات ٪ J" ، البيانات) ؛
}) ؛
}) ؛
كود العميل index.html:
نسخة الكود كما يلي:
<! doctype html>
<html>
<head lang = "en">
<meta charset = "utf-8">
<title> </title>
<script src = "/socket.io/socket.io.js"> </script>
<script>
var socket = io.connect () ؛
Socket.on ("الأخبار" ، الوظيفة (البيانات) {
console.log (data.hello) ؛
socket.emit ("حدث بلدي الآخر" ، {my: "data"}) ؛
}) ؛
</script>
</head>
<body>
</body>
نتائج العملية:
شيء واحد يمكنك العثور عليه هو أن التنفيذ دائمًا على جانب الاستماع ، وليس على الجانب اليدوي.
الحالة 2: عندما يتم تشغيل حدث الطرف الآخر يدويًا ، حدد وظيفة رد الاتصال.
عندما يتم توصيل العميل والخادم ، يتم إرسال حدث setName إلى العميل. الحدث يحمل "Zhang San". عندما يتم تشغيل الحدث ، يتم تحديد وظيفة رد الاتصال ، والتي تخرج قيم المعلمة 2 إلى وحدة التحكم.
نسخة الكود كما يلي:
var http = require ("http") ؛
var sio = required ("socket.io") ؛
var fs = require ("fs") ؛
var server = http.createserver (function (req ، res) {
Res.Writehead (200 ، {"content-type": "text/html"}) ؛
res.end (fs.readfilesync ("./ index.html")) ؛
}) ؛
server.listen (1337) ؛
var socket = sio.listen (server) ؛
Socket.on ("الاتصال" ، الدالة (المقبس) {
Socket.emit ("setName" ، "Zhang San" ، Function (Data1 ، Data2) {
console.log (data1) ؛
console.log (data2) ؛
}) ؛
}) ؛
نسخة الكود كما يلي:
<! doctype html>
<html>
<head lang = "en">
<meta charset = "utf-8">
<title> </title>
<script src = "/socket.io/socket.io.js"> </script>
<script>
var socket = io.connect () ؛
Socket.on ("setName" ، الدالة (الاسم ، fn) {
console.log (الاسم) ؛
fn ("li si" ، "Wang Wu") ؛
}) ؛
</script>
</head>
<body>
</body>
</html>
نتائج التنفيذ:
يتم تنفيذ وظيفة رد الاتصال فعليًا في نهاية المشغل.