nodeでtypescriptを使ってsocketを開発して実践します.

3085 ワード

最近は業務用のsocketを使って接続して送るのもmqttを使って開発にTCPの知識を知る必要があります.私も少しsoketの知識を持っています.友達の助けになりたいです.
BBなしで直接ビジネスシーンを話します.クライアントはゲートウェイに接続する必要があります.ゲートウェイはこのsocketを持って自分で更に取引所にsocketを作りに行きます.取引所には情報通知があります.同時に、一部の業務はクライアントに通知する必要があります.ゲートウェイsocketも走ります.同時に、すべてのデータ転送はpbを使います.
  • 準備作業typescript vscode環境構成nodeゲートウェイtelnetクライアントprotobufferは
  • を紹介しませんでした.
  • typescriptマイクロソフトが開発した強力なタイプのプログラミング言語jsのオーバーセット完璧な互換性があります.私達の開発環境はts+vscode
  • を使います.
  • インストールts npm init -g -s tscはプロジェクトディレクトリの下でtsc initが成功しないとtsconfig.jsonファイルを直接作成すればいいです.
    {
        "compilerOptions": {
            "target": "es6",
            "sourceMap": true,
            "module": "commonjs",
            "outDir": "./dist",
            "noImplicitAny": true,
        },
        "include": [
            "src/**/*"
        ]
    }
    
    srcフォルダを作成して、distフォルダokを継続して、command+shift+Bを選択して監視しています.変更があれば、自動的にjsコードを生成できます.mapファイルが存在します.gitアップロード時は無視すればいいです.この時、私達のコードはtsを使って書き込みができます.そして、調整がスムーズです.
  • nodeゲートウェイ、私たちはsslかtslかに関わらず、最も簡単なnetでsocketゲートウェイを作ります.
  • import * as TCP from "net"
    const tcp = TCP.createServer((socket:TCP.Socket)=>{
      
        const buffer:Buffer = new Buffer("hello",'utf-8')
        // socket.write(buffer)
        console.log('CONNECTED: ' +
        socket.remoteAddress + ':' + socket.remotePort);
        socket.write(buffer);
    
    
        socket.on('data', function(data) {
            console.log('DATA ' + socket.remoteAddress + ': ' + data);
            //      ,              
            socket.write('You said "' + data + '"');
        });
    })
     
    tcp.listen(3999,()=>{
        console.log('1234')
    })
    
    これはtcpサービスが運行しています.
  • telnet macの下にインストールされたtelnet brew install telnetを使ってゲートウェイtelnet localhost 3999に接続しました.4.クライアントhttpがあるインターフェースを要求した後、あるsocketに接続するように通知できる業務があります.私たちは配列で各socketを追加します.接続すると、この配列が切断されたら、このsocketのコードは全部
  • です.
    import * as TCP from "net"
    import * as http from "http"
    import { Socket } from "net";
    
    const sockets : Array = new Array()
    
    const tcp = TCP.createServer((socket:TCP.Socket)=>{
        sockets.push(socket)
        const buffer:Buffer = new Buffer("hello",'utf-8')
        // socket.write(buffer)
        console.log('CONNECTED: ' +
        socket.remoteAddress + ':' + socket.remotePort);
        socket.write(buffer);
    
    
        socket.on('data', function(data) {
            console.log('DATA ' + socket.remoteAddress + ': ' + data);
            //      ,              
            socket.write('You said "' + data + '"');
        });
    })
     
    tcp.listen(3999,()=>{
        console.log('1234')
    })
    
    const app = http.createServer((req,res)=>{
        if(req.url == "/socket"){
            const s = sockets[0]
            s.write("      ")
        }
    })
    
    app.listen(3000)
    
    t1(1)
    
    このように1つのsocketゲートウェイが転送を完了する部分は、pbを使用して代替することができる.tslリンクの暗号化を追加します.