2016-04-22 11 views
1

に注入されたsocket.ioクライアントをリダイレクトします。ここで発生する問題は、node.jsによるsocket.ioサーバーのサンプルsocekt.ioクライアントと2つの端末とクライアントとサーバー間のソケット接続を開きます) 私は問題はありません。

しかし、このsocket.io-clientをEmber.jsアプリケーションに挿入しようとすると、正確にはember-cli-mirageというクライアントに指定されたアドレスからクライアントをリダイレクトします:
( 'http:// localhost:8080')
HTTPのようなものに
://localhost:8080/socket.io/?EIO=3 &輸送=ポーリング& .....
もミラージュも正確に設定することで、私が扱うことができないエラーが表示されます wsClient.connect()メソッドをルーティングするか、または this.passthrough()を呼び出す前に、 wsClient.connect()を呼び出します。ember-cli-mirageは、ミラージュ


私は、ブラウザでの検査コンソールからのエラーのスクリーンショットを貼り付けます。

error image


あなたはどのようにこの問題を解決するために、任意のアイデアを持っていますか?事前にありがとう、私はまた、トピックが重複しないことを願っています。

// server.js 
var app = require('http').createServer(handler); 
var io = require('socket.io')(app); 
app.listen(8080); 

function handler(req, res) { 
    res.writeHead(200); 
    res.end('default.index'); 
} 

var rooms = { 
    'room1': [ 

    ], 
    'room2': [ 

    ] 
}; 

io.on('connection', function(socket) { 
    console.log('client connected'); 


    socket.on('join', function(roomName) { 
    rooms[roomName].push(socket.id); 
    socket.join(roomName); 
    }); 

    socket.on('leave', function(roomName) { 
    var toRemove = rooms[roomName].indexOf(socket.id); 
    rooms[roomName].splice(toRemove, 1); 
    socket.leave('roomName'); 
    }); 


    socket.on('eNotification', function(data) { 
    console.log(data); 
    io.to(socket.id).emit('eNotificationCall', data); 
    io.to('room2').emit('eventNotification', data); 
    }); 


    socket.on('gNotification', function(data) { 
    console.log(data); 
    io.to(socket.id).emit('gNotificationCall', data); 
    io.to('room1').emit('diagram1Notification', data); 
    }); 


    socket.on('close', function() { 
    console.log('client disconnected'); 
    }); 

}); 


//client.js 
var wsClient = { 
    socket: null, 
    connect: function() { 
    this.socket = io.connect('http://localhost:8080'); 
    this.socket.on('connect', function() { 

     console.log('mirage client connected!'); 
    }); 

    }, 
    send: function(eventData, graphData) { 
    this.socket.emit('eNotification', eventData); 
    this.socket.emit('gNotification', graphData); 
    } 

}; 
export default wsClient; 



//config.js 
import wsClient from './websockets/client'; 

export default function() { 
wsClient.connect(); 
console.log(wsClient.socket); 
var graphData = {X: "2", Y: "3"}; 
var eventData = {myDAta: 'myDAta', message: 'message'}; 
setInterval(function() { 
    wsClient.send(graphData, eventData); 
}, 5000); 
} 

答えて

2

this.passthrough()をargsなしで呼び出すと、現在のドメインの要求だけがパススルーできます。これは、WebSocketの接続が別のポート上にあるように見えるので、それを直接指定してみてください:

this.passthrough('http://localhost:8080/**'); 

は、より多くの情報のためthe docsを参照してください。

+0

ありがとうございますが、まだ問題があります。私は自分のサーバーに接続することができますが、この接続は安定していません - サーバーに接続するほど速く切断されます。ミラージュがループ上で私のconnectメソッドを呼び出すように見えます。まだそれを解決する方法がわからない、あなたは何か考えている? – tekobylinski

+0

エラーのスナップショットを投稿できますか? Emberのスラックに#ec-mirageに参加することも自由にお気軽に –

+0

あなたの時間を無駄にして申し訳ありませんが、私の友人はこの問題の解決策を見つけましたが、これは私が逃してしまった解決策です(http://stackoverflow.com/questions/28238628/ socket-io-1-x-use-websockets-only)。もう一度あなたの助けをありがとう! – tekobylinski

関連する問題