Socket.io 클래스 라이브러리는 서로에게 메시지를 보낼 수있을뿐만 아니라 소켓 포트 오브젝트의 Emit 메소드를 통해 서로 이벤트를 보냅니다.
Emit은 이전 이벤트에서 현재 다음과 같이 말했습니다 : Emit은 수동으로 이벤트를 트리거하는 데 사용됩니다.
코드 사본은 다음과 같습니다.
socket.emit (이벤트, 데이터, 함수 (data1, data2 ......) {
});
Emit 메소드를 사용하여 이벤트를 보낼 때 다른 쪽 끝에있는 소켓 포트 오브젝트의 ON 메소드를 사용하여 한 번 메소드를 듣을 수 있습니다.
코드 사본은 다음과 같습니다.
Socket.on (이벤트, 기능 (데이터, fn) {
});
socket.once (이벤트, 함수 (data, fn) {
})
위의 콜백 함수의 매개 변수 데이터 : 상대방이 보낸 이벤트에서 수행 한 데이터,
FN : 이벤트를 보낼 때 상대방이 지정한 콜백 콜백 함수.
사례 1 : 서버와 클라이언트가 연결된 후 뉴스 이벤트가 클라이언트로 전송되고 이벤트에서 객체가 운반되며 객체의 헬로 속성 값은 "Hello"입니다. 클라이언트가 다른 이벤트 이벤트를 보내면 "서버 수신 데이터"는 콘솔에서 출력 + 클라이언트에서 운반 된 데이터가 이벤트를 보냅니다.
서버 사이드 코드, Server.js
코드 사본은 다음과 같습니다.
var http = 요구 사항 ( "http");
var sio = require ( "socket.io");
var fs = 요구 ( "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 ( "연결", 함수 (소켓) {
socket.emit ( "뉴스", {hello : "hello"});
socket.on ( "나의 다른 이벤트", 함수 (data) {
console.log ( "서버는 정보를 받아들입니다. %j", data);
});
});
클라이언트 index.html 코드 :
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<head lang = "en">
<meta charset = "utf-8">
<제목> </title>
<script src = "/socket.io/socket.io.js"> </script>
<cript>
var socket = io.connect ();
Socket.on ( "뉴스", 기능 (데이터) {
Console.log (data.Hello);
socket.emit ( "나의 다른 이벤트", {my : "data"});
});
</스크립트>
</head>
<body>
</body>
작동 결과 :
당신이 찾을 수있는 한 가지는 실행이 수동 측면이 아니라 항상 듣는쪽에 있다는 것입니다.
사례 2 : 상대방의 이벤트가 수동으로 트리거되면 콜백 함수를 지정하십시오.
클라이언트와 서버가 연결되면 SetName 이벤트가 클라이언트로 전송됩니다. 이 행사는 "Zhang San"을 전달합니다. 이벤트가 트리거되면 콜백 함수가 지정되어 2 개의 매개 변수 값이 콘솔에 출력됩니다.
코드 사본은 다음과 같습니다.
var http = 요구 사항 ( "http");
var sio = require ( "socket.io");
var fs = 요구 ( "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 ( "연결", 함수 (소켓) {
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>
<script src = "/socket.io/socket.io.js"> </script>
<cript>
var socket = io.connect ();
socket.on ( "setname", function (name, fn) {
Console.log (이름);
fn ( "li si", "Wang Wu");
});
</스크립트>
</head>
<body>
</body>
</html>
실행 결과 :
콜백 함수는 실제로 트리거 엔드에서 실행됩니다.