socket.io 클래스 라이브러리는 서로 메시지를 보낼 수 있을 뿐만 아니라 소켓 포트 개체의 내보내기 메서드를 통해 이벤트도 서로 보낼 수 있습니다.
emit은 이전 이벤트에서 언급했지만 이제는 한 문장으로 표현됩니다. Emit은 이벤트를 수동으로 트리거하는 데 사용됩니다.
소켓.방출(이벤트,데이터,함수(데이터1,데이터2...){
});
emit 메소드를 사용하여 이벤트를 보낼 때 상대방 소켓 포트 객체의 on 메소드와 Once 메소드를 사용하여 수신할 수 있습니다.
소켓.온(이벤트,함수(데이터,fn){
});
소켓.한번(이벤트,함수(데이터,fn){
})
위 콜백 함수의 매개변수 데이터 : 상대방이 보낸 이벤트에 담긴 데이터,
fn : 이벤트 전송 시 상대방이 지정한 콜백 함수
사례 1: 서버와 클라이언트가 연결되면 뉴스 이벤트가 클라이언트에 전송됩니다. 해당 이벤트는 클라이언트를 수신한 후 다른 이벤트 이벤트를 전송합니다. 클라이언트는 이벤트에 담긴 데이터를 콘솔에 출력합니다.
서버측 코드, 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 소켓=sio.listen(서버);
소켓.on("연결", 함수(소켓) {
Socket.emit("news",{hello:"Hello"});
소켓.on("다른 이벤트", 함수(데이터) {
console.log("서버가 %j 정보를 받았습니다.",data);
});
});
클라이언트 index.html 코드:
var 소켓=io.connect();
소켓.on("뉴스", 함수(데이터) {
console.log(data.hello);
Socket.emit("my other event",{my:"data"});
});
머리>
본문>
실행 결과:,
한 가지 발견할 수 있는 사실은 실행이 수동 실행 측이 아니라 항상 수신 측에서 이루어진다는 것입니다.
사례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 소켓=sio.listen(서버);
소켓.on("연결", 함수(소켓) {
소켓.emit("setName","张三", function (data1,data2) {
console.log(data1);
console.log(data2);
});
});
var 소켓=io.connect();
소켓.on("setName", 함수 (이름,fn) {
console.log(이름);
fn("이사","王五");
});
머리>
본문>