socket.io-client ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ต์ Angular 6๊ณผ ํธํ๋์ง ์์ต๋๋ค. ์คํ์ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
ReferenceError : Global์ Object ../ node_modules / socket.io-client / node_modules / socket.io-parser / is-buffer.js (is-buffer.js : 4)์ ์ ์๋์ด ์์ง ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์๋ ์๊ฒฌ์ ์ฝ์ผ์ญ์์ค.
https://github.com/angular/angular-cli/issues/9827#issuecomment -369578814
์ด ์ค๋ฅ๋ฅผ ์ง์ ๋ณด๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ angular 6.0 ์ฑ ๋จ์ ์๋น์ค์ ์ถ๊ฐํ์ธ์.
import { Injectable } from 'angular/core';
import * as socketIo from 'socket.io-client';
@Injectable()
export class SocketService {
private socket;
constructor() {}
public initSocket(): void {
this.socket = socketIo();
}
}
initSocket ํจ์๋ฅผ ์ ๊ฑฐํ๋ฉด ์ค๋ฅ๊ฐ ์ฌ๋ผ์ง๋๋ค.
์ข์, Angular 6์๋ socket.io-client์ ํจ๊ป ์๋ํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ถ๊ฐ (๋ชจ๋ ์ฐฝ) .global = window; polyfills.ts์
์ค์ ๋ก ํ๋ก์ ํธ ๋ฐ ํด๋น ์ข
์์ฑ์ ๋ง์ global
์ฐธ์กฐ๊ฐ ์์ต๋๋ค. https://github.com/search?utf8=%E2%9C%93&q=global+repo%3Asocketio%2Fengine.io-client + repo % 3Asocketio % 2Fengine.io-parser + repo % 3Asocketio % 2Fsocket.io-client + repo % 3Asocketio % 2Fsocket.io-parser + extension % 3A.js & type = Code & ref = advsearch & l = & l =
๊ทธ๋๋ ์ด๋ฌํ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ถ์์ฉ์ ๋ํด ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@darrachequesne ์ ์ ํ๊ฒ ํด๊ฒฐ ๋ ๋๊น์ง ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ํ๋ก์ ํธ ํฌํฌ์ ์ถ๊ฐ ํ ์ ์์ต๋๊น?
@jessycormier "ํ๋ก์ ํธ์ ํฌํฌ"
์ฒซ ๋ฒ์งธ ๋ถ์์ฉ์ https://github.com/darrachequesne/has-binary/pull/4 ์์ ์ ์ญ์ ์ ๊ฑฐํ๋ฉด ์ผ๋ถ Electron ์ฑ์ด ์ค๋จ๋๋ ๊ฒ ๊ฐ์ต๋๋ค : https://github.com/darrachequesne/has-binary/issues/ 5 ...
์๋ ํ์ธ์. ์ฌ๊ธฐ์ ์ง์ ์ด ์์ต๋๊น? ์ด๋ค ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น? ๊ถ์ฅ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@realshaft- ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ Ionic 4 / Angular 6 ์น ์ฑ์์ ์ ์๊ฒ
์ข์, Angular 6์๋ socket.io-client์ ํจ๊ป ์๋ํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
(window as any).global = window;
์polyfills.ts
(src
ํด๋์ ์์)
@realshaft ๊ฐ์ฌํฉ๋๋ค, angular6์์ ์๋ํฉ๋๋ค;)
์๋
ํ์ธ์ @Everyone ,
์ ๋ฐ ๋์์ฃผ์ธ์.
๊ทธ๋์ ์น ์์ผ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ๋ ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ๊ตฌ์ฑ ์์๋ฅผ ์ฃผ์
ํ์ต๋๋ค.
์์ผ์ ๋ํ ์ฐ๊ฒฐ์ ์๋ฒ ์ฝ์์์ a user connected
๋ฅผ ๊ฐ์ ธ ์ค๋ฏ๋ก ๊ด์ฐฎ์ต๋๋ค.
ํ์ง๋ง ๊ตฌ์ฑ ์์์์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ค๊ณ ํ ๋ ์๋ฌด๊ฒ๋ ์ ์ก๋์ง ์์ต๋๋ค.
๋ด ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
socketService.ts
import {Injectable} from '@ angular / core'; import {Observable} from 'rxjs / Observable'; 'rxjs / Subject'์์ {Subject} ๊ฐ์ ธ ์ค๊ธฐ; import * as io from 'socket.io-client'; @ ์ฃผ์ฌ ๊ฐ๋ฅ ({ providedIn : '๋ฃจํธ' }) export class SocketService { ๊ฐ์ธ URL = 'http : // localhost : 3000'; ๊ฐ์ธ ์์ผ = io (this.url); // ์์ผ์ ๋ฉ์์ง ๋ณด๋ด๊ธฐ ๋ฉ์์ง (๋ฉ์์ง) { // ๋ฉ์์ง ๋ณด๋ด๊ธฐ this.socket.emit ( 'chat', msg); } chat (msg) { this.socket $ .emit ( '์ฑํ ', msg); // ๊ด์ฐฐ ๊ฐ๋ฅํ๊ฒ ํจ } }
๋ฐ ๊ตฌ์ฑ ์์ ํ์ผ
'@ angular / core'์์ {Component, OnInit} ๊ฐ์ ธ ์ค๊ธฐ; import {SocketService} from '../../socket.service'; @๊ตฌ์ฑ ์์({ ์ ํ๊ธฐ : 'app-socket', templateUrl : './socket.component.html', styleUrls : [ './socket.component.scss'] }) ๋ด๋ณด๋ด๊ธฐ ํด๋์ค SocketComponent๋ OnInit {๋ฅผ ๊ตฌํํฉ๋๋ค. ๊ฑด์ค์( ๊ฐ์ธ ์์ผ : SocketService ) {} ngOnInit () { } send () { const msg = '์๋ ํ์ธ์'; this.socket.message (msg); } }
์ฌ๊ธฐ ๋ด ์์ผ ์๋ฒ ์ฐ๊ฒฐ์ ๋๋ค. ๋๋ MVC๋ฅผ ์ฌ์ฉํ๋ค
const gameModel = require ( '../ models / game') const userModel = require ( '../ models / users') const wsModel = require ( '../ models / socket') const ์์ผ = require ( 'socket.io') module.exports = (์๋ฒ) => { const io = ์์ผ (์๋ฒ); // WebSocket ํธ๋ค๋ฌ io.on ( 'connection', (์์ผ) => { console.log ( '์ฐ๊ฒฐ๋ ์ฌ์ฉ์') }) // ์ฑํ ๋ฉ์์ง ๋ฐ๊ธฐ io.on ( '์ฑํ ', (msg) => { // io.emit ( 'res', json.stringify (msg)) console.log (msg); }) }
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค
์ฌ๊ธฐ์ ์ฝ๊ฐ์ ํดํค ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
cdn์์ socket.io-client๋ฅผ ๋ค์ด๋ก๋ํ๊ณ src
ํด๋์ socket.io-client.js
๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅํฉ๋๋ค.
main.ts
๋ค์ ์ค์ ์ถ๊ฐํฉ๋๋ค.
import * as io_ from './socket.io-client.js';
window['io'] = io_;
polyfills.ts
๋ด๋ถ ์ถ๊ฐ :
(window as any).global = window;
์ด์ ๋ค์์ ์ฌ์ฉํ์ฌ socket.io-client
์ ํ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
window['io']('localhost')
๋ด ๊ฒ์ ๋จ์ํ ๋ค์์ ์ถ๊ฐํ์ฌ ์์ ์ ์์ํ์ต๋๋ค.
polyfills.ts
๋ด๋ถ ์ถ๊ฐ :(window as any).global = window;
๊ฐ๋ 6.1.0
socket.io-client 2.1.1
์ด๊ฒ์ angular 7.1.x๋ก ์ ๊ทธ๋ ์ด๋ ํ ํ์๋ ๊ณ์ ์๋ํฉ๋๋ค.
๋์์ด๋๋๋ฐ ์?
@realshaft ๊ฐ์ฌํฉ๋๋ค, angular6์์ ์๋ํฉ๋๋ค;)
Angular 7.x์์๋ ์๋ํ์ต๋๋ค.
(window as any).global = window;
์ด๊ฒ์ Angular 7์์๋ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค.
๋์ผํ ์๋ฃจ์ ์ด ๊ฐ๋ 8์์ ์๋ํฉ๋๋ค.
ํ๋๋ ๋ด๊ฐ ์ด๊ฒ์ ๋งํ๋ ๊ฒ์ ๋ฏฟ์ ์ ์์ต๋๋ค. @mjarkk๊ฐ ์ ๊ณต ํ ๋์ผํ ์๋ฃจ์ ์ ๋๋ค. angular10์์ ์๋ํฉ๋๋ค! -์ ์๊ฒ ์ด์ ๋ 2.x ์๋ฒ๊ฐ 3.x ํด๋ผ์ด์ธํธ์์ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค!
3 ๋ฒ์ ์ดํ์์ด ํดํน stil์ lmao๋ก ์๋ํฉ๋๋ค. angular 11์์๋ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
๊ทธ๋ฌ๋์ด ๋ฌธ์ ๊ฐ ๋ค์ ํ์
๋๋ฉด ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋๋ ๋ค์ดํฐ๋ธ ์๋ฐ ์คํฌ๋ฆฝํธ WebSockets ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ํํ ๋ฆฌ์ผ์ ์์ ํ๋ ค๋ฉด https://javascript.info/websocket์ ์ฌ์ฉํ์ญ์์ค.
ํฅํ ๋
์๋ฅผ ์ํด :์ด ๋ฌธ์ ๋ [email protected]
์์ ์์ ๋์์ผ๋ฉฐ ๋ ์ด์ global
๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๊ฐ ์์ต๋๋ค.
๊ด๋ จ ์ปค๋ฐ :
[email protected]
ํฌํจ๋จ)[email protected]
ํฌํจ๋จ)๊ฒ๋ค๊ฐ : Angular 11์ ์์ ๊ฐ ์ฌ๊ธฐ์ ์ถ๊ฐ๋์์ต๋๋ค : https://github.com/socketio/socket.io/tree/master/examples/angular-todomvc
๊ฐ์ฌ!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด ๊ฒ์ ๋จ์ํ ๋ค์์ ์ถ๊ฐํ์ฌ ์์ ์ ์์ํ์ต๋๋ค.
๊ฐ๋ 6.1.0
socket.io-client 2.1.1
์ด๊ฒ์ angular 7.1.x๋ก ์ ๊ทธ๋ ์ด๋ ํ ํ์๋ ๊ณ์ ์๋ํฉ๋๋ค.