ํด๋ผ์ด์ธํธ ์ธ์คํด์ค์ ์ฐ๊ฒฐ ํด์ () ๋ฉ์๋๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ IRC์ ํฅ/๋ฐด๊ณผ ๊ฐ์ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์๋ฅผ ์ ๊ฑฐํ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํฉ๋๋ค.
(์ฐ์ ์์๋ ๋ฎ์ง๋ง) ๊ตฌํํ ๊ฐ์น๊ฐ ์๋์ง ๋ ผ์ํ๋ ๊ฒ์ด ํฅ๋ฏธ๋ก์ธ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ 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 + "]");
};
๊ฐ์ฌ ํด์,
๋ฏธ๋ฆฌ.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
socket.disconnect();
์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์คํ ์ฐ๊ฒฐ ํด์ ์ด๋ฒคํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ง๋ง ๋ง ๊ทธ๋๋ก ์ฐ๊ฒฐ์ ๋ซ์ง ์์ต๋๋ค. ๋ฒ๊ทธ๊ฐ ์๊ฑฐ๋ ์ด ๋์์ด ์์๋ฉ๋๊น?