ไลบรารีคลาส Socket.io ไม่เพียง แต่สามารถส่งข้อความถึงกันและกันเท่านั้น แต่ยังส่งเหตุการณ์มาให้กันและกันผ่านวิธี EMIT ของวัตถุพอร์ตซ็อกเก็ต
Emit กล่าวในเหตุการณ์ก่อนหน้านี้ที่กล่าวว่า: EMIT ใช้เพื่อกระตุ้นเหตุการณ์ด้วยตนเอง
การคัดลอกรหัสมีดังนี้:
socket.emit (เหตุการณ์, ข้อมูล, ฟังก์ชั่น (data1, data2 ...... ) {
-
เมื่อส่งเหตุการณ์โดยใช้วิธีการ EMIT คุณสามารถใช้วิธี ON ON ของวัตถุซ็อกเก็ตพอร์ตที่ปลายอีกด้านเพื่อฟังในวิธีการครั้งเดียว
การคัดลอกรหัสมีดังนี้:
socket.on (เหตุการณ์, ฟังก์ชั่น (ข้อมูล, fn) {
-
socket.once (เหตุการณ์, ฟังก์ชั่น (ข้อมูล, fn) {
-
ข้อมูลพารามิเตอร์ในฟังก์ชั่นการโทรกลับข้างต้น: ข้อมูลที่ดำเนินการในเหตุการณ์ที่ส่งโดยบุคคลอื่น
FN: ฟังก์ชั่นการโทรกลับการโทรกลับที่ระบุโดยบุคคลอื่นเมื่อส่งเหตุการณ์
กรณีที่ 1: หลังจากเซิร์ฟเวอร์และไคลเอนต์เชื่อมต่อเหตุการณ์ข่าวจะถูกส่งไปยังไคลเอนต์และวัตถุจะถูกดำเนินการในเหตุการณ์และค่าแอตทริบิวต์ Hello ของวัตถุคือ "สวัสดี" เมื่อไคลเอนต์ส่งเหตุการณ์อื่น ๆ ของฉัน "เซิร์ฟเวอร์ได้รับข้อมูล" จะถูกส่งออกในคอนโซล + ข้อมูลที่ดำเนินการในไคลเอนต์จะส่งเหตุการณ์
รหัสด้านเซิร์ฟเวอร์, server.js
การคัดลอกรหัสมีดังนี้:
var http = ต้องการ ("http");
var sio = ต้องการ ("socket.io");
var fs = ต้องการ ("fs");
var server = http.createServer (ฟังก์ชั่น (req, res) {
res.writehead (200, {"content-type": "text/html"});
res.end (fs.readfilesync ("./ index.html"));
-
Server.Listen (1337);
var socket = siO.listen (เซิร์ฟเวอร์);
socket.on ("การเชื่อมต่อ" ฟังก์ชั่น (ซ็อกเก็ต) {
socket.emit ("ข่าว", {สวัสดี: "สวัสดี"});
socket.on ("เหตุการณ์อื่น ๆ ของฉัน" ฟังก์ชั่น (ข้อมูล) {
console.log ("เซิร์ฟเวอร์ยอมรับข้อมูล %j", ข้อมูล);
-
-
client 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 จะถูกส่งไปยังไคลเอนต์ เหตุการณ์ดำเนินการ "จางซาน" เมื่อเหตุการณ์ถูกเรียกใช้ฟังก์ชันการโทรกลับจะถูกระบุซึ่งเอาต์พุตค่าพารามิเตอร์ 2 ไปยังคอนโซล
การคัดลอกรหัสมีดังนี้:
var http = ต้องการ ("http");
var sio = ต้องการ ("socket.io");
var fs = ต้องการ ("fs");
var server = http.createServer (ฟังก์ชั่น (req, res) {
res.writehead (200, {"content-type": "text/html"});
res.end (fs.readfilesync ("./ index.html"));
-
Server.Listen (1337);
var socket = siO.listen (เซิร์ฟเวอร์);
socket.on ("การเชื่อมต่อ" ฟังก์ชั่น (ซ็อกเก็ต) {
socket.emit ("setname", "Zhang San", ฟังก์ชั่น (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>
ผลการดำเนินการ:
ฟังก์ชั่นการโทรกลับถูกดำเนินการจริงที่ปลายทริกเกอร์