2017-04-01 4 views
1

node.jsサーバーがあり、socket.ioリスナーが接続されています。コードはこのようなものです。一般的な方法でsocket.ioサーバーに接続できますか?

const server = new Hapi.Server(); 
    server.connection({ 
     "port": config.port 
    }); 

let io = socketio(server.listener); 
io.on("connection", function(socket) { 
     console.log("A user connected"); 

     socket.on("disconnect", function(){ 
      console.log("A user disconnected"); 
     }); 

     // receive message from client 
     socket.on("client-server", function(msg) { 
      console.log(msg); 
     }); 
    }); 

// somewhere to emit message 
io.emit("server-client", "server to client message"); 

通常、私はwebsocketサーバーに接続する標準的な方法を使用します。たとえば、次のようになります。

<!DOCTYPE html> 
<html> 
    <head><title>Hello world</title></head> 
    <script src="http://localhost:3000/socket.io/socket.io.js"></script> 
    <script> 
    var socket = io(); 
    socket.on('server-client', function(data) {document.write(data)}); 
    socket.emit('client-server', 'test message'); 
    </script> 
    <body>Hello world</body> 
</html> 

問題なく動作します。今、私の同僚は、彼のFMEサーバーからwebsocketサーバーに接続したいと思っています。彼の研究に基づいて、彼が使用できる唯一の方法は、このようなURLを使用しているのWebSocketサーバーに接続します。

ws://localhost:3000/websocket 

私の質問は:このタイプを使用してサーバーのリスナーをsocket.ioに接続する方法があります文字列の?

もしそうでない場合は、ws://host:port urlでwebsocketサーバーを作成し、それを私のnode.jsサーバーに接続する方法はありますか?

または、FMEサーバーのsocket.ioリスナーに接続する方法はありますか?

io.set('transports', ['websocket']); 

そして、クライアント上で、この追加:今、あなただけのWebSocketサーバーに接続することができます

var socket = io({transports: ['websocket']}); 

をサーバー上でこれを追加し、唯一のWebSocketを使用するSocket.IOを伝えるために

+1

あなたの同僚は自分のサーバーから使用できるsocket.ioクライアントライブラリを入手する必要があります。 Socket.ioはWebSocketの上にある独自のプロトコルなので、socket.ioサーバに接続するにはsocket.io互換のクライアントライブラリが必要です。私は見る。 – jfriend00

+0

問題は、彼が彼のFMEサーバで何らかのコーディング作業を行うことができないということです。したがって、彼がsocket.ioクライアントをセットアップする方法はありません。良いことは、私たちはいくつかのpythonスクリプトをFMEサーバにデプロイできることです。 Pythonのsocket.ioクライアントをnode.jsで作成したsocket.ioサーバーに接続できますか? – zhangjinzhou

+0

はい、pythonにはsocket.ioのサポートがあります。 – jfriend00

答えて

0

wsプロトコルを使用します。

+0

彼は依然としてクライアント権限を作成する必要がありますか?しかし、彼はどんなコーディングもすることはできません。 – zhangjinzhou

関連する問題