2013-08-06 185 views
0

我在我的app.js中使用socket.io並使用express框架進行配置,現在當我運行應用程序時,應用程序和socket.io都將啓動並且我可以在客戶端和app.js之間發送消息。在socket.io-client服務器端使用Socket.IO

app.js(服務器)

var express = require('express'), 
    app = express(), 
    http = require('http'), 
    server = http.creatServer(app), 
    socket = require('socket.io'), 
    io = socket.listen(server); 

server.listen(3000);  

io.sockets.on('connection', function(client){ 
    client.on('message', function(msg){ 
     io.sockets.emit('message', msg); 
    }); 
}); 

客戶:

<script type="text/javascript" src="/socket.io/socket.io.js"></script> 
<script type="text/javascript"> 
    var server = io.connect('http://127.0.0.1:3000'); 
    server.emit('message', 'Hello World'); 
</script> 

但我想使用其他控制器插槽...我使用 「socket.io客戶端(https://npmjs.org/package/socket.io-client)」 ,現在我想要獲取從app.js發送到所有套接字的消息 。

controller.js(服務器)

var io = require('socket.io-client'), 
    socket = io.connect('127.0.0.1', { 
     port: 3000 
    }); 

socket.on('connect', function(){ 
    console.log('CONNECTED!!'); 
    socket.on('message', function(msg){ 
     console.log("New message:", msg); 
    }); 
}); 

它無法連接!

回答

0

如果你不在乎誰得到消息,你可以從socket.io做全局廣播。這在控制器內部工作。

+0

感謝。但它在控制器中不起作用! – Aref

+0

如果我使用不同的端口socket.io它的作品!但如果我在套接字中設置應用程序端口,它不能在控制器中工作......只在客戶端工作 – Aref

0

您沒有使用客戶端套接字發射。 io是socket.io實例,而不是連接的客戶端套接字。

在服務器

io.sockets.on('connection', function(client){ 
    client.on('message', function(msg){ 
     client.emit('message', msg); 
    }); 
}); 

,如果你需要廣播,那麼你可以使用IO實例

io.socket.sockets.emit('message', msg); 
+0

我可以使用io.sockets.emit,client.emit或客戶端在app.js(服務器)和客戶端之間發送消息。 broadcast.emit但我想在app.js(服務器)和聊天控制器(服務器)之間發送一些消息。 如果我的socket.io端口不同於應用程序端口,它已成功工作,我可以在服務器控制器和客戶端之間發出消息...但在本例中,我使用相同的端口用於應用程序和socket.io – Aref

相關問題