2017-10-30 13 views
2

私はExpress/Node.jsアプリケーションでバックエンドwebsocketサーバー用にSocket.ioを使用しています。サーバー側のコードは次のようになります。フロントエンドのネイティブwebsocketクライアントをNode.js Socket.ioサーバーに接続

const socket = new WebSocket('ws://localhost:3001'); 

socket.onopen =() => { 
    socket.send('I am a client and I am listening'); 

socket.onmessage = (event) => { 
    console.log('Client received message: ', event); 
}; 

socket.onclose = (event) => { 
    console.log('Client socket has closed: ', event); 
    } 
}; 

のWebSocket:(同じNode.jsのサーバー上でホストされている)フロントエンドでは

const socketIo = io(server); 
socketIo.on('connection', (client) => { 
    console.log('client connected'); 
    client.emit('test', { test: '123' }); 
    client.on('client-test', (data) => { 
     console.log('from client: ', data); 
    }); 
}); 

、私はネイティブWebSocketをを使用しています、私はこれを持っています接続は決して確立されていないようです(私はサーバーから何も記録されません)。さらに、私はクライアント側のサーバーから送信されたメッセージ(つまり、 'test'メッセージ)を受け取る方法も、クライアントからサーバー上のメッセージを受け入れる方法もわかりません(つまり、サーバーは一部のクライアント「テスト」メッセージ)。

フロントエンドのネイティブWebソケットがバックエンドのSocket.ioと互換性がないのだろうか。フロントエンドでSocket.ioを使用する際にはセットアップ作業をしていましたが、可能であればフロントエンドのネイティブWebソケットで作業したいと考えています。

答えて

4

Socket.ioはネイティブWebソケットではなく、カスタムトランスポートレイヤーを備えています。 socket.ioと通信するにはhttps://github.com/socketio/engine.io-clientが必要です。

また、バックエンドでネイティブwebsocketライブラリを使用することもできます。 Like:https://github.com/websockets/ws

+0

また、非JS言語を使用している人は、どのようにして接続する必要がありますか? – BradLaney

+0

@BradLaney彼らはいくつかの他の言語のクライアントを持っています:[Github](https://github.com/socketio?utf8=%E2%9C%93&q=socket.io-client&type=&language=)また、あなたの選択した言語に対応しています。 –

関連する問題