2015-11-16 41 views
3

是否可以在其他一些node.js服務器文件內發出事件? 就像我有app.js正在運行,還有一個其他文件也在運行。Socket.io在其他服務器文件內發送事件

其他服務器文件裏面我有

var io = require('socket.io'); 
中的文件是這樣的(我想給這個數據 - 的價格提供給客戶端)

更遠。

io.emit('price', { price: price}); 

我得到的錯誤是io.emit不是函數。任何想法我做錯了什麼?

回答

2

你需要有掛到你的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(...) 
+0

謝謝你,我想我應該怎麼做。雖然我解決了這個問題,並決定創建全局事件,並在我的socket.io工作的app.js文件中監聽這些全局事件,然後發送socket.io本身。下次我會用你的方法。 – NotAJohnDoe

0

我改成了

var io = require('socket.io')(); 

而且它現在的工作(不拉的錯誤),但仍無法將其發送給客戶端。

+0

這可能不起作用,因爲您創建了一個新的'io'對象,該對象未掛鉤到您的Web服務器,因此未連接到當前webSocket連接。 – jfriend00

相關問題