だから私は自分のプロジェクトを開発から本番に移行しようとしています。これはmodulus.ioでホストされています。
問題は、サーバー <-> クライアント接続間でデータを送信または受信しようとするたびに、アプリケーションがサーバー側で失敗することです。
これは私が得るエラーです:
/mnt/data/2/node_modules/socket.io/lib/parser.js:75
data = JSON.stringify(ev);
^
TypeError: Converting circular structure to JSON
at Object.stringify (native)
at Object.exports.encodePacket (/mnt/data/2/node_modules/socket.io/lib/parser.js:75:19)
at Socket.packet (/mnt/data/2/node_modules/socket.io/lib/socket.js:212:21)
at Socket.emit (/mnt/data/2/node_modules/socket.io/lib/socket.js:368:15)
at null.<anonymous> (/mnt/data/2/server/*******/*******.coffee:36:52)
at wrapper [as _onTimeout] (timers.js:252:14)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
これが私がデバッグしているところです:
これはエラーのある行ですが、誰が最初にイベントを発行しようとしたかによって、別の場所にある場合もあります。
Vent.socket?.emit('event', @)
Socket.io は期待どおりに動作します
localhost
Socket.io は失敗する前にクライアントに正常に接続します (chrome 開発ツールから):
XHR finished loading: "http://********.onmodulus.net/socket.io/1/?t=1372727710817". socket.io.js:1659
XHR finished loading: "http://********.onmodulus.net/socket.io/1/xhr-polling/sKNz7RX5j2fo-Rku8bDb?t=1372727711281".
Socket.io はサーバーに接続し、イベントを発行または応答しようとするまで実行されます
また、それが役立つ場合は、私の Event Aggregator クラスがあります:
module.exports = class Events extends events.EventEmitter
constructor: (io) ->
self = @
@io = io
@socket = null
@io.configure(
() =>
console.log 'configuring socket.io...'.yellow
@io.set("transports", ["xhr-polling"])
@io.set("polling duration", 10)
)
@io.sockets.on('connection',
(socket) =>
@socket = socket
console.log 'socket connected'
socket.on('client', (event, arg) ->
if arg?
self.emit(event, arg)
else
self.emit(event)
)
)