Socket.io: Client.disconnect() ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ•์ œ๋กœ ์—ฐ๊ฒฐ์„ ๋Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2010๋…„ 09์›” 08์ผ  ยท  24์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: socketio/socket.io

ํด๋ผ์ด์–ธํŠธ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ ํ•ด์ œ() ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ IRC์˜ ํ‚ฅ/๋ฐด๊ณผ ๊ฐ™์€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•™๋Œ€์ž๋ฅผ ์ œ๊ฑฐํ•  ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

socket.disconnect(); ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ์—ฐ๊ฒฐ ํ•ด์ œ ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€๋งŒ ๋ง ๊ทธ๋Œ€๋กœ ์—ฐ๊ฒฐ์„ ๋‹ซ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์ด ๋™์ž‘์ด ์˜ˆ์ƒ๋ฉ๋‹ˆ๊นŒ?

๋ชจ๋“  24 ๋Œ“๊ธ€

(์šฐ์„ ์ˆœ์œ„๋Š” ๋‚ฎ์ง€๋งŒ) ๊ตฌํ˜„ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ IRC ํ‚ฅ/๋ฐด์€ ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—ฐ๊ฒฐ๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ณ  ํŠน์ • ์ฑ„๋„์˜ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋งŒ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†ก์ƒ์˜ ์ด์œ ๊ฐ€ ์•„๋‹ˆ๋ผ ์ •์ฑ…์ƒ์˜ ์ด์œ ๋กœ ์—ฐ๊ฒฐ์ด ๋Š๊ฒผ๋‹ค๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ถŒํ•œ ๋ถ€์—ฌ ์‹คํŒจ. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜์—ˆ์ง€๋งŒ ํ˜ธ์ŠคํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ์—ฐ๊ฒฐ์ด ๋Š๊ฒผ์Œ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ๋Œ€์ฒด ์ „์†ก์„ ์‹œ๋„ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

client.connection.destroy()๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ๋Š๋Š” ํ•ฉ๋ฒ•์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๊นŒ?

ํ”Œ๋Ÿฌ์Šค1. ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์„ ๋Š์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์›ํ•ฉ๋‹ˆ๋‹ค. :)

ํด๋ผ์ด์–ธํŠธ._onDisconnect(); ๋˜๋Š”
socket.clients[kickedUserSocketId]._onDisconnect();

ํŠธ๋ฆญ์„ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : "onDisconnect" ์•ž์— ๋ฐ‘์ค„์ด ์žˆ์ง€๋งŒ ์ด ๋งˆํฌ๋‹ค์šด์—์„œ๋Š” ๋ Œ๋”๋ง๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๋ ‡๊ฒŒํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค (์ง์ ‘ ํ…Œ์ŠคํŠธํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ).
socket.clients[kickedClientId].send({ ์ด๋ฒคํŠธ: '์—ฐ๊ฒฐ ํ•ด์ œ' });
socket.clients[kickedClientId].connection.end();

์ด๊ฒƒ์ด ์ง€๊ธˆ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด - ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

socket.clients[kickedClientId].send({ ์ด๋ฒคํŠธ: '์—ฐ๊ฒฐ ํ•ด์ œ' });
socket.clients[kickedClientId].connection.end();

์ด๊ฒƒ์„ ํ•˜๋Š” "๊ณต์‹์ ์ธ" ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ????

๊ณต์‹์ ์ธ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์‹œ ์—ด์–ด์ฃผ์„ธ์š”.

์•„์ง ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•˜๋ ค๋ฉด ๋‹ค์‹œ ์—ฌ์‹ญ์‹œ์˜ค.

๋ฐฉ๊ธˆ client/socket.js์—์„œ ์ด ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

/**
 * Kicks client
 *
 * <strong i="6">@api</strong> public
 */

Socket.prototype.disconnect = function () {
  if (!this.disconnected) {
    this.log.info('booting client');

    if ('' === this.namespace.name) {
      if (this.manager.transports[this.id] && this.manager.transports[this.id].open) {
        this.manager.transports[this.id].onForcedDisconnect();
      } else {
        this.manager.onClientDisconnect(this.id);
        this.manager.store.publish('disconnect:' + this.id);
      }
    } else {
      this.packet({type: 'disconnect'});
      this.manager.onLeave(this.id, this.namespace.name);
      this.$emit('disconnect', 'booted');
    }

  }

  return this;
};

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ–ˆ๊ณ  ( socket.disconnect() ) ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” 2011๋…„ ์ค‘๋ฐ˜๋ถ€ํ„ฐ ์žˆ์—ˆ๋˜ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ์•„๋ฌด๋„ ์•Œ๋ ค์ฃผ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ #795๋„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

socket.disconnect(); ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ์—ฐ๊ฒฐ ํ•ด์ œ ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€๋งŒ ๋ง ๊ทธ๋Œ€๋กœ ์—ฐ๊ฒฐ์„ ๋‹ซ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์ด ๋™์ž‘์ด ์˜ˆ์ƒ๋ฉ๋‹ˆ๊นŒ?

@geniousphp ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

๊ทธ๋ž˜์„œ ์™œ ๋ฌธ์ œ๊ฐ€ ๋‹ซํ˜”์Šต๋‹ˆ๊นŒ? ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ? ๊ฒฐ๋ก ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์™œ ๋‹ซํ˜€ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๊ณ , ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๊ฐ•์ œ๋กœ ์—ฐ๊ฒฐ์„ ๋Š๋Š” ์ถ”์•…ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋…ธ๋ ฅํ•˜๋‹ค,
socket.manager.onClientDisconnect(socket.id);

๊ทธ๊ฒŒ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ์—„์ฒญ๋‚œ.

๋ถˆํ–‰ํžˆ๋„ @acidhax ๊ทธ์˜ ๋ฐฉ๋ฒ•์€ 1.0 ๋ฆด๋ฆฌ์Šค ์ดํ›„ ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์–ด์จŒ๋“  0.9.16์„ 1.XX๋กœ ์›ํ™œํ•˜๊ฒŒ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

+1

์—ฌ๊ธฐ ๊ฐ™์€ ๋ณดํŠธ. ์ด๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์„œ๋กœ ๊ฒฉ๋ฆฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

    try {
        IO.Options opts = new IO.Options();
        opts.forceNew = true;
        opts.timeout = -1;
        socket1 = IO.socket(c.ip, opts);
        socket1.on("res", getdataListener);
        socket1.connect();
                socket1.on(com.github.nkzawa.socketio.client.Socket.EVENT_CONNECT,
                new Emitter.Listener() {

                    <strong i="5">@Override</strong>
                    public void call(Object... args) {

                        Logger.print("CONNECTED...............");

                        Message msg = new Message();
                        msg.what = ResponseCodes.CreateQueueResp;
                        Login.handler.sendMessage(msg);

                        activity.runOnUiThread(new Runnable() {

                            <strong i="6">@Override</strong>
                            public void run() {
                                // TODO Auto-generated method stub

                                startChecking();
                                startIdleChecking();

                            }

                        }); 
                    }

                })
                .on(com.github.nkzawa.socketio.client.Socket.EVENT_RECONNECT,
                        new Emitter.Listener() {

                            <strong i="7">@Override</strong>
                            public void call(Object... arg0) {


                                System.out
                                        .println("............... EVENT_RECONNECT");

                                // TODO Auto-generated method stub

                            }
                        })
                .on(com.github.nkzawa.socketio.client.Socket.EVENT_CONNECT_ERROR,
                        new Emitter.Listener() {

                            <strong i="8">@Override</strong>
                            public void call(Object... args) {

                                System.out
                                        .println("............... EVENT_CONNECT_ERROR");

                            }

                        })
                .on(com.github.nkzawa.socketio.client.Socket.EVENT_CONNECT_TIMEOUT,
                        new Emitter.Listener() {

                            <strong i="9">@Override</strong>
                            public void call(Object... args) {

                                System.out
                                        .println("............... EVENT_CONNECT_TIMEOUT");

                            }

                            // this is the emit from the server
                        })

                .on(Socket.EVENT_ERROR, new Emitter.Listener() {

                    <strong i="10">@Override</strong>
                    public void call(Object... args) {

                        System.out
                                .println("......................... EVENT_ERROR");

                    }

                    // this is the emit from the server

                })
                .on(com.github.nkzawa.socketio.client.Socket.EVENT_DISCONNECT,
                        new Emitter.Listener() {

                            <strong i="11">@Override</strong>
                            public void call(Object... args) {

                                Logger.print(".............EVENT_DISCONNECT");


                                if (!open) {

                                    //server_message = getResources().getString(R.string.It_seems_that);


                                    server_message="It seems that connection to server have been Lost.Please reconnect!"; 

                                    ServerError error = new ServerError(activity, server_message);


                                }

                            }

                        });

    } catch (Exception e) {

        e.printStackTrace();

    }

๊ธฐ๊ธฐ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์œผ๋ฉด ๋‚ด ๊ธฐ๋Šฅ ์•ฑ์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ๋‚ด ํ•จ์ˆ˜ ์•ฑ ์†Œ์ผ“ ์—ฐ๊ฒฐ์ด ์—ด๋ฆด ๋•Œ๋งˆ๋‹ค. ์—ด๋ฆฐ ์—ฐ๊ฒฐ์„ ๊ฐ•์ œ๋กœ ๋‹ซ๋Š” ๋ฐฉ๋ฒ•.
๋‚ด ๋…ผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
'์—„๊ฒฉํ•œ ์‚ฌ์šฉ';
var _test = require('socket.io-client');
var ์†Œ์ผ“ = _test.connect('http://XXXXXXXXXX.net/');
export.handler = ํ•จ์ˆ˜(์ด๋ฒคํŠธ, ์ปจํ…์ŠคํŠธ) {
var ๊ฒฐ๊ณผ ๋ฉ”์‹œ์ง€ = JSON.stringify(event.message, null, 2);
if(!socket.connected)
{
socket.emit('์‚ฌ์šฉ์ž ์ถ”๊ฐ€', '1542');
}
socket.emit('์ƒˆ ๋ฉ”์‹œ์ง€',"[" + ResultMessage + "]");

};
๊ฐ์‚ฌ ํ•ด์š”,
๋ฏธ๋ฆฌ.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰