是否可以在其他一些node.js服務器文件內發出事件? 就像我有app.js正在運行,還有一個其他文件也在運行。Socket.io在其他服務器文件內發送事件
其他服務器文件裏面我有
var io = require('socket.io');
中的文件是這樣的(我想給這個數據 - 的價格提供給客戶端)
更遠。
io.emit('price', { price: price});
我得到的錯誤是io.emit不是函數。任何想法我做錯了什麼?
是否可以在其他一些node.js服務器文件內發出事件? 就像我有app.js正在運行,還有一個其他文件也在運行。Socket.io在其他服務器文件內發送事件
其他服務器文件裏面我有
var io = require('socket.io');
中的文件是這樣的(我想給這個數據 - 的價格提供給客戶端)
更遠。
io.emit('price', { price: price});
我得到的錯誤是io.emit不是函數。任何想法我做錯了什麼?
你需要有掛到你的Web服務器一個io
對象(接收傳入的連接socket.io),然後你需要共享(通過導出或通過調用函數並傳遞io
對象)的一個io
與任何其他想要使用它的文件對象。
你沒有表現非常代碼的,但是想象一下,你在你的主快遞文件初始化socket.io:
app.js
var express = require('express');
var app = express();
var server = app.listen(8080);
var io = require('socket.io')(server);
// load msg module and give it the io variable
var msg = require('./msg.js')(io);
msg.js
// define module constructor that accepts the io variable
var io;
module.exports = function(importIO) {
io = importIO;
}
// elsewhere in the module
io.emit(...)
我改成了
var io = require('socket.io')();
而且它現在的工作(不拉的錯誤),但仍無法將其發送給客戶端。
這可能不起作用,因爲您創建了一個新的'io'對象,該對象未掛鉤到您的Web服務器,因此未連接到當前webSocket連接。 – jfriend00
謝謝你,我想我應該怎麼做。雖然我解決了這個問題,並決定創建全局事件,並在我的socket.io工作的app.js文件中監聽這些全局事件,然後發送socket.io本身。下次我會用你的方法。 – NotAJohnDoe