2017-02-07 39 views
3

socket.ioメッセージローカルホストサーバ(ノード)に送信することは可能ですか?linuxでコマンドラインを使用しますか?私はlinuxのコマンドラインからsocket.io websocketにメッセージを送信するにはどうしたらいいですか?

...これが可能であるかどう...希少Googleの結果から、私はこれが可能か、複雑ではない推測しているかわからない私のsocket.ioコードは次のようになります。

var io = require('socket.io'); 
var socket; 

socket = io.listen(server, {log: false}); 
server.listen(8081); 

socket.sockets.on('connection', function (socket) { 
    socket.on('message', function (data) 
    { 
    console.log("Received socket message from GUI: "+data); 
    } 
}); 

私は、次のようなsocket.ioメッセージを送信したいと考えています。"testControl,loadModels,start"これはサーバ側のロジックをトリガします。これは可能ですか?

が、私は有望と思われる websocketdに出くわしたが、それ は、LinuxでのWebSocketを作成し、私はちょうど 既存のWebSocketにメッセージを送信 にしたいです。

バージョン情報:

  • ノードバージョン:v0.10.42
  • Socket.IOバージョン:1.3.4
  • Expressバージョン:4.12.0

答えて

4

私ができましたこれを回避するには、以下を実行します。

  1. app.post('/sendSocketMessage', function(req, res){ 
        console.log("Request is "+JSON.stringify(req.body)); 
        socketManager.parse(req.body); //send message directly to your socket parser 
        res.status(200).send("OK"); 
    }); 
    
  2. サーバーに新しいエンドポイントを作成するには、(のはそれを拡張子のないclientに名前を付けましょう)このような単純なクライアントを書くことができますカール

    curl --noproxy localhost, 
        -X POST 
        --data "data=testControl,loadModels,start," 
        http://localhost:8081/sendSocketMessage 
    
6

を使用してデータを送信します。

#!/usr/bin/env node 
const socket = require('socket.io-client')('http://localhost:3000'); 
const someDelay = 10; 
socket.on('connect', function() { 
    console.log('connected...'); 
    if (process.argv[2] && process.argv[3]) { 
     console.log('sending ' + process.argv[2] + ': ' + process.argv[3]); 
     socket.emit(process.argv[2], process.argv[3]); 
     setTimeout(() => { 
      process.exit(0); 
     }, someDelay); 
    } else { 
     console.log('usage: ./client.js <event> <data>'); 
     process.exit(1); 
    } 
}); 

非常に基本的なpackage.json

{ 
    "name": "client", 
    "version": "0.0.1", 
    "private": true, 
    "scripts": { 
    "start": "client" 
    }, 
    "dependencies": { 
    "socket.io-client": "^1.4.6" 
    } 
} 

その後、npm installを実行client権限を与える実行すると、あなたはどう思いますか./client message testControl

(例えば)でそれを実行することができますか? ;)

+0

クール!うん、これは別の良い方法です。私のソケットにメッセージを送信できる小さなノードサーバーを作成するだけです!ありがとう! – Kayvar

+0

'socket.emit'の代わりに' socket.send'を使うと問題が解決しました – Kayvar

関連する問題