Библиотека классов Socket.io может не только отправлять сообщения друг другу, но и отправлять события друг другу через метод Emit emort of Port Object.
Эмит сказал в предыдущем событии, которое теперь говорит: Emit используется для вручную запустить события.
Кода -копия выглядит следующим образом:
socket.emit (event, data, function (data1, data2 ......) {
});
При отправке событий с использованием метода EMIT вы можете использовать метод ON of the Socket Port на другом конце для прослушивания метода Once.
Кода -копия выглядит следующим образом:
Socket.on (event, function (data, fn) {
});
socket.once (event, function (data, fn) {
})
Данные параметра в вышеуказанной функции обратного вызова: данные, передаваемые в случае, отправленном другой стороной,
FN: Функция обратного вызова обратного вызова, указанная другой стороной при отправке события.
Случай 1: После того, как сервер и клиент подключены, новостное событие отправляется клиенту, а объект переносится в мероприятии, а значение атрибута Hello - «Привет». Когда клиент отправляет мое другое событие события, «Сервер получает данные» выводится в консоли + данные, представленные в клиенте, отправляет событие.
Код на стороне сервера, Server.js
Кода -копия выглядит следующим образом:
var http = require ("http");
var sio = require ("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 (сервер);
Socket.on ("connection", function (ocket) {
socket.emit ("News", {hello: "hello"});
Socket.on («Мое другое событие», function (data) {
console.log («Сервер принимает информацию %j», data);
});
});
Client Index.html код:
Кода -копия выглядит следующим образом:
<! Doctype html>
<html>
<head lang = "en">
<meta charset = "utf-8">
<title> </title>
<script src = "/socket.io/socket.io.js"> </script>
<Скрипт>
var socket = io.connect ();
Socket.on ("News", function (data) {
console.log (data.hello);
socket.emit ("Мое другое событие", {my: "data"});
});
</script>
</head>
<тело>
</body>
Результаты работы:
Одна вещь, которую вы можете найти, это то, что исполнение всегда на стороне прослушивания, а не на ручной стороне.
Случай 2: Когда событие другой стороны запускается вручную, укажите функцию обратного вызова.
Когда клиент и сервер подключены, событие SetName отправляется клиенту. Мероприятие несет "Чжан Сан". Когда событие запускается, указана функция обратного вызова, которая выводит 2 значения параметров в консоли.
Кода -копия выглядит следующим образом:
var http = require ("http");
var sio = require ("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 (сервер);
Socket.on ("connection", function (ocket) {
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>
<Скрипт>
var socket = io.connect ();
Socket.on ("setName", function (name, fn) {
console.log (имя);
fn ("li si", "wan wu");
});
</script>
</head>
<тело>
</body>
</html>
Результаты исполнения:
Функция обратного вызова фактически выполняется на конце триггера.