source

socket.socket vs.socket.send.

ittop 2023. 9. 4. 20:38
반응형

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);
});

단순하고 정확함(출처:소켓.IO Google 그룹):

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

반응형