socket.socket vs.socket.send.
이 둘의 차이점은 무엇입니까?
만약 내가 변했다면,socket.emit
로.socket.send
작동 중인 프로그램에서 서버가 메시지를 수신하지 못했습니다. 그 이유는 이해할 수 없습니다.
나는 또한 내 프로그램에서 만약 내가 변한다면 그것을 알아차렸습니다.socket.emit
로.socket.send
서버는 메시지를 수신하지만 여러 번 수신하는 것 같습니다.사용할 때console.log()
서버가 수신한 내용을 확인하기 위해 사용할 때와 다른 내용을 보여줍니다.socket.emit
.
왜 이런 행동을 합니까?사용 시기를 어떻게 알 수 있습니까?socket.emit
또는socket.send
?
socket.emit을 사용하면 다음과 같은 사용자 지정 이벤트를 등록할 수 있습니다.
서버:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
클라이언트:
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
Socket.send도 마찬가지이지만 'news'에 등록하지 않고 다음 메시지를 보냅니다.
서버:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.send('hi');
});
클라이언트:
var socket = io.connect('http://localhost');
socket.on('message', function (message) {
console.log(message);
});
socket.emit
서버 및 클라이언트에서 사용자 정의 이벤트를 내보낼 수 있습니다.
socket.send
에서 수신된 메시지를 보냅니다.'message'
이벤트
TL;DR:
socket.send(data, callback)
본질적으로 전화하는 것과 같습니다.socket.emit('message', JSON.stringify(data), callback)
소스 코드를 보지 않고, 나는 송신 기능이 적어도 문자열 메시지를 보내는 데 더 효율적인 편집이라고 생각합니다.
네, 기본적으로 방출은 물체를 보낼 수 있게 해줍니다. 이것은 매우 편리합니다.
다음 예를 들어 보겠습니다.socket.emit
:
sendMessage: function(type, message) {
socket.emit('message', {
type: type,
message: message
});
}
그리고 집에서 점수를 기록하는 사람들을 위해, 이것은 사용하는 것처럼 보입니다.socket.send
:
sendMessage: function(type, message) {
socket.send(JSON.stringify({
type: type,
message: message
}));
}
socket.send
바닐라 WebSocket 인터페이스와의 호환성을 위해 구현되었습니다.socket.emit
는 소켓의 기능입니다.IO 전용.둘 다 똑같이 하지만,socket.emit
메시지를 처리하는 데 조금 더 편리합니다.
기본적인 양방향 통신 시스템에서 socket.emit는 더 설득력 있고 사용하기 쉽다는 것이 입증되었으며(개인적인 경험) Socket의 일부입니다.주로 이러한 목적으로 구축된 IO
https://socket.io/docs/client-api/ #send-args-ack
socket.send
메시지 이벤트를 보냅니다.
socket.emit(eventName[, ...args][, ack])
eventName을 사용자 지정할 수 있습니다.
v4.x 업데이트
공식 문서에 따르면:
socket.send
를 보냅니다.message
이벤트. 다음과 같이 사용할 수 있습니다.
// Client side
socket.send('hello')
// Server side
socket.on('message', (data) => {
console.log(data) // hello
})
socket.emit
커스텀 이벤트를 보냅니다.이는 다음과 같이 사용됩니다.
// Client side
socket.emit('hello', 'rick')
// Server side
socket.on('hello', (name) => {
console.log(name) // rick
})
저는 개인적으로 socket.emit을 사용하는 것이 더 이해하기 쉽고 일관성을 유지할 것을 권장합니다.
언급URL : https://stackoverflow.com/questions/11498508/socket-emit-vs-socket-send
'source' 카테고리의 다른 글
동일한 열에서 다른 결과가 있을 수 있는 SQL 데이터 수집 (0) | 2023.09.04 |
---|---|
PowerShell - 호출된 응용 프로그램의 프로세스 ID 가져오기 (0) | 2023.09.04 |
PHP Curl 라이브러리를 사용하여 HTTP를 지속/유지합니까? (0) | 2023.09.04 |
"동적 유형 텍스트 스타일을 사용하여 글꼴 요구를 자동으로 조정" 경고의 의미는 무엇입니까? (0) | 2023.09.04 |
스위프트 만드는 법UI 목록이 자동으로 스크롤됩니까? (0) | 2023.09.04 |