0

いくつかの異なるファイルで自分の socket.io インスタンスにアクセスする必要があります。どのように機能させますか?

これが私が試したものです:

main.js

var app = express();
var sockets = require('./sockets');
sockets.listen(app)

sockets.js

var io = require('socket.io');
exports.listen = function(app) {
    io = io.listen(app);
    //...
}
exports.io = io;

SomeClass.js

var io = require('./sockets').io;

var SomeClass = function() {
    var Clients = io.sockets.clients('room');
    //io is undefined...
}

exports.SomeClass = SomeClass;
4

1 に答える 1

0

サーバーを正しく起動していないため、ファイルでio.socketsは未定義です。Socket.IO は HTTP サーバー インスタンスを想定していますが、代わりに Express インスタンスを渡しています。また、エクスポート後に変数を変更しようとしていますが、それは機能しません。これはあなたがすべきことです:

var http = require('http');
var express = require('express');
var app = express();

var server = http.createServer(app);
var io = require('socket.io').listen(server):

server.listen(80);

これをファイルに分割したい場合は、Socket.IO インスタンスをメイン アプリケーションに配置し、必要なときに他のモジュールに渡す必要があります。

于 2013-09-16T16:40:32.093 に答える