Socket.io-client: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ socket.io-client๋Š” ์ตœ์‹  Angular 6๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2018๋…„ 05์›” 13์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: socketio/socket.io-client

๋‚˜๋Š” ์›ํ•œ๋‹ค :

  • [x] ๋ฒ„๊ทธ๋ณด๊ณ  -ํ•ด๊ฒฐ๋จ, ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋งˆ์ง€๋ง‰ ๋‘ ์ค„์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

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์—

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

๋‚ด ๊ฒƒ์€ ๋‹จ์ˆœํžˆ ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

polyfills.ts ๋‚ด๋ถ€ ์ถ”๊ฐ€ :

(window as any).global = window;

๊ฐ๋„ 6.1.0
socket.io-client 2.1.1

์ด๊ฒƒ์€ angular 7.1.x๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„์—๋„ ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

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

์‹ค์ œ๋กœ ํ”„๋กœ์ ํŠธ ๋ฐ ํ•ด๋‹น ์ข…์†์„ฑ์— ๋งŽ์€ 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 ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ์ปค๋ฐ‹ :

๊ฒŒ๋‹ค๊ฐ€ : Angular 11์˜ ์˜ˆ์ œ๊ฐ€ ์—ฌ๊ธฐ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค : https://github.com/socketio/socket.io/tree/master/examples/angular-todomvc

๊ฐ์‚ฌ!

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