2014-07-23 123 views
0

所以我想要做的是讓索引(例如)發送消息到Index2,我想這樣做的原因是,我可以有兩個不同的消息客戶端。有沒有辦法做到這一點?例如可以說索引是控制器,索引2是遊戲。MultiClient Socket.io/Node.js

這裏是我的索引和索引2代碼:

<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script src="/socket.io/socket.io.js"></script> 
<script type="text/javascript"> 
    jQuery(function($) { 
     var socket = io.connect(); 
     var $messageForm = $('#send-message'); 
     var $messageBox = $('#message'); 
     var $chat = $('#chat'); 

     $messageForm.submit(function(e) { 
      e.preventDefault(); 
      socket.emit('send message', $messageBox.val()); 
      $messageBox.val(''); 
     }); 

     socket.on('new message', function(data) { 
      $chat.append(data + "<br/>"); 
     }); 
    }); 
</script> 

服務器端:

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

server.listen(3000); 

app.get('/:index', function(req, res) { 
    res.sendfile(__dirname + '/Index.html', '/index2.html'); 
}); 

io.sockets.on('connection', function(socket) { 
    socket.on('send message', function(data) { 
     io.sockets.emit('new message', data); 
    }); 
}); 
+0

您可以使用「房間」。看看socket.io文檔。 – AJcodez

+0

謝謝,我會試一試,但你能給我一個例子嗎? – MatOak

回答

0

只要你插口連接到同一個地方每個客戶端上,他們將互相發送消息(docs)。

var socket = io("https://my.domain.com/shared") 

使用服務器上的房間/名稱空間(docs)。

serverio.of('/shared') 
+0

因此, var socket = io(「https://my.domain.com/shared」) 取代了 var socket = io.connect(); Index2上的 ?或者它是否在索引和索引2上都被替換? 另外,「serverio.of('/ shared')」在app.js文件中?謝謝 – MatOak

+0

'io()'是'io.connect()'的快捷方式。服務器io進入你的服務器javascript(也許稱爲'app.js'?) – AJcodez

+0

嗨,Aj 你能告訴我在哪裏放兩行代碼? 林並不完全確定在文檔中的位置, 謝謝 – MatOak