๋๋ socket.io-client์ ์ต์ํ์ง ์์ต๋๋ค. ๋ฌธ์๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฝ์ ํ์๋ io.Manager์ io.Socket์ ์ฐจ์ด์ ์ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก io ()์์ ์ ์์ผ์ ์์ฑ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ด๋ฆฌ์ ์ธ์คํด์ค๋ ์ด๋ป๊ฒ ์์ฑ ํ ์ ์์ต๋๊น? ํํธ ๊ด๋ฆฌ์์ ์ด๋ฒคํธ์ ์์ผ์ ์ด๋ฒคํธ์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น?
๊ฐ์ฌํฉ๋๋ค.
+1
+1
์, ๋ฌธ์๊ฐ์ด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ๋ฌด์์ด ๋ ํนํ๊ณ ์ธ์ ์ฌ์ฉํ๋์ง ์๋ ค์ฃผ์ง ์์ต๋๋ค.
์ง๊ธ๊น์ง ์๋ํ ๊ฒ์ฒ๋ผ ๋๋ถ๋ถ์ ๊ด๋ฆฌ์ ์์ฑ์ io ์กฐ๊ฐ์ ์ง์ ์ ์ฉ๋ ์ ์์ต๋๋ค.
์
socket = io(
'http://192.168.2.2:8088' + Param.chatNamespace + '?parammmm=1',
{
query: { key: 'Michael' },
path: Param.path,
transports: ['websocket'],
autoConnect: false, // like this, could be found in manager piece
}
);
์ด๊ฒ์ด ์ ๊ฐ ์๋ฒฝํ๊ฒ ์ํ๋ ๊ฒ์
๋๋ค.
์ฐจ์ด์ ์ด ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐจ์ด์ ์ ์๊ณ ์ถ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชฉ์ ์ ๋ฌด์์ ๋๊น :
๋งค๊ฐ ๋ณ์์ ๋ํ ๋งค์ฐ ์์ธํ์ง๋ง ์ฐจ๊ฐ์ด ์ค๋ช ์ ์ ์ธํ๊ณ ๋ฌธ์์์ ์ฌ์ฉํ ์์๋ ๊ฒ์ ์ฐพ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ํ ๋ด ๋ธ๋ผ์ฐ์ ์ ํด๋ผ์ด์ธํธ HTML ํ์ด์ง์์ socket.io ๋๋ socket.io-client๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด
๊ฐ์ฌํฉ๋๋ค. ์ฃ์กํฉ๋๋ค.์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ง์ ์์ ์ด ์งํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ดํดํ๋ ๊ฒ์ ๋งค์ฐ ํผ๋ ์ค๋ฝ์ต๋๋ค.
์์ ํ ๋์ ํด. ๊ด๋ฆฌ์์ ์์ผ ์ธ์คํด์ค์ ์ฐจ์ด์ ์ ์ฐพ์ ์ ์์ต๋๋ค.
+1,
+1
๋ฉ !! ๊ทธ๋์ ์์ง ์ด๊ฒ์ ๋ํ ์๋ต์ด ์์ต๋๊น ??? wth์ฒ๋ผ !!
์๋ ํ์ธ์! ์ฌ๊ธฐ ์ ์ฌ๊ธฐ์ ๊ด๋ฆฌ์ ๋ฐ ์์ผ ํด๋์ค์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ถ๊ฐ
Manager๋ (WebSocket ๋๋ HTTP ๊ธด ํด๋ง๊ณผ ๊ฐ์ ์ ์ก์ ์ฌ์ฉํ์ฌ) ์๋ฒ์ ๋ํ ์ฐ๊ฒฐ์ ์ค์ ํ๋ ํ์ ์์ค ์์ง ์ธ Engine.IO ํด๋ผ์ด์ธํธ ์ธ์คํด์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
Manager๋ ์ฌ ์ฐ๊ฒฐ ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค.
๋จ์ผ ๊ด๋ฆฌ์๋ ์ฌ๋ฌ ์์ผ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Socket์ ์๋ฒ์ ์ํธ ์์ฉํ๊ธฐ์ํ ๊ธฐ๋ณธ ํด๋์ค์ ๋๋ค. ์์ผ์ ํน์ ๋ค์ ์คํ์ด์ค (๊ธฐ๋ณธ์ ์ผ๋ก /)์ ์ํ๋ฉฐ ๊ธฐ๋ณธ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ด๋ฆฌ์ ์ธ์คํด์ค๋ io()
์คํํ ๋ ์์ ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์์ผ์ io
์์ฑ์ ์ฌ์ฉํ์ฌ ์ก์ธ์ค ํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์์ผ์ ์์ฑํ๋ฉด ์ฌ์ฌ์ฉ๋ฉ๋๋ค ( forceNew
์ต์
์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ).
const socket = io();
const socket2 = io("/test2");
// socket.io === socket2.io
const socket3 = io("/test3", { forceNew: true }); // new manager
// socket.io !== socket3.io
์ด๋ฒคํธ์ ๊ด๋ จํ์ฌ ๋ค์ ์ด๋ฒคํธ๋ ์ฐ๊ฒฐ ์ํ์ ๊ด๋ จ์ด ์์ผ๋ฉฐ ๊ด๋ฆฌ์ ๋ฐ ๊ด๋ จ ์์ผ ๋ชจ๋์์ ๋ด ๋ณด๋ ๋๋ค.
Socket์ ๋ค์ ์คํ์ด์ค์ ๊ด๋ จ๋ ๋ค์๊ณผ ๊ฐ์ ์ถ๊ฐ ์ด๋ฒคํธ๋ฅผ ๋ด ๋ณด๋ ๋๋ค.
๊ทธ๊ฒ์ด ์ถฉ๋ถํ ๋ช ํํ ์ง ์๋ ค์ฃผ์ธ์. ๊ทธ๋ฆฌ๊ณ ์ง์ฐ๋์ด ์ฃ์กํฉ๋๋ค!
@darrachequesne ์ค๋ช
ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. io(url, options)
์ (๊ณผ)์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช
ํด ์ฃผ์๊ฒ ์ต๋๊น?
io.connect(url, options)
์ ๋ฐ? ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ๋ ๋ค ์์ผ ์ธ์คํด์ค๋ฅผ ๋ฐํํ์ง๋ง ์ด๋ป๊ฒ ๋ค๋ฅด๊ฒ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋๋
์ฐจ์ด์ ์ด ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐจ์ด์ ์ ์๊ณ ์ถ์ต๋๋ค.
- io (URL, ์ต์ )
- io.connect (URL, ์ต์ )
๊ทธ๋ฆฌ๊ณ ๋ชฉ์ ์ ๋ฌด์์ ๋๊น :
- ์ ๊ด๋ฆฌ์ (URL, ์ต์ )
๋งค๊ฐ ๋ณ์์ ๋ํ ๋งค์ฐ ์์ธํ์ง๋ง ์ฐจ๊ฐ์ด ์ค๋ช ์ ์ ์ธํ๊ณ ๋ฌธ์์์ ์ฌ์ฉํ ์์๋ ๊ฒ์ ์ฐพ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ํ ๋ด ๋ธ๋ผ์ฐ์ ์ ํด๋ผ์ด์ธํธ HTML ํ์ด์ง์์ socket.io ๋๋ socket.io-client๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด
๊ฐ์ฌํฉ๋๋ค. ์ฃ์กํฉ๋๋ค.์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ง์ ์์ ์ด ์งํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ดํดํ๋ ๊ฒ์ ๋งค์ฐ ํผ๋ ์ค๋ฝ์ต๋๋ค.
io(url, options)
์ io.connect(url, options)
๊ฐ ๋ชจ๋ ๊ฐ๋ค๊ณ ์๊ฐํฉ๋๋ค.
// https://github.com/socketio/socket.io-client/blob/2.3.0/lib/index.js#L15
module.exports = exports = lookup;
// https://github.com/socketio/socket.io-client/blob/2.3.0/lib/index.js#L85
exports.connect = lookup;
์, ๊ฐ์ ์ผ์ํ๋ ๋ ๊ฐ์ง ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด์๋ ์ด์ ๋ ์ข์ ์ง๋ฌธ์
๋๋ค ... : smile :. 2012 ๋
๋ถํฐ๋ https://github.com/socketio/socket.io-client/commit/d5652feadc1a2085942b5a6a22394f07242e77b2 ์ดํ๋ก ๋ณด์
๋๋ค connect()
๊ฐ v3์์ ์ ๊ฑฐ ๋ ์ ์์ต๋๋ค.
๊ด๋ฆฌ์ ์์ฑ์์ ๊ด๋ จํ์ฌ ๊ณต์ฉ API์์ ์ ๊ฑฐํด์ผ ํ ์๋ ์์ต๋๋ค. ์๋:
const socket = io("ws://example.com/my-namespace", {
reconnectionDelayMax: 10000,
query: {
auth: "123"
}
});
// is the same as
const manager = new Manager("ws://example.com", {
reconnectionDelayMax: 10000
});
const socket = manager.socket("/my-namespace", {
query: {
auth: "123"
}
});
๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธํ์ต๋๋ค : https://github.com/socketio/socket.io-website/commit/e779468a8df739a7ff4316719af2931d6ec70539
์ด์ ๋ ๋ช ํ ํด์ง๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
๊ด๋ฆฌ์์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์์ผ๋ฉด ๋ค๋ฅธ ํจํค์ง fe์์๋ ๊ณต์ ํ ์์๋ ํจํค์ง๊ฐ ์๋์์๋ ์ ์ญ ๊ธฐ๋ณธ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ๋ ๋์ ์์ผ ์ธ์คํด์ค๋ฅผ ์์ ํ ์ ์ด ํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์, ๋ฌธ์๊ฐ์ด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ๋ฌด์์ด ๋ ํนํ๊ณ ์ธ์ ์ฌ์ฉํ๋์ง ์๋ ค์ฃผ์ง ์์ต๋๋ค.