我是Nodejs和Socket.io的新手,這是我第一次創建任何聊天應用程序,所以如果我問一些愚蠢的問題,請原諒我。如何創建多個Nodejs套接字io服務器客戶端?
在我的網絡中,我必須提供一種聊天服務,一種是即時聊天,它是一種聊天室,另一種是像Facebook Messenger這樣的私人消息。
我已經在顯示消息之前在私人信使中創建了兩個對話,我正在檢查對話ID,它的工作方式非常合適。現場辯論也適用。
但是有一個問題,任何在私人信使發送的消息也顯示在現場辯論窗口中。因此,我更改了Messenger的Server.js文件,並且更改了偵聽端口,現在用於實時辯論的偵聽端口是3000,而Messenger是8050,但仍然收到Messenger消息的實時辯論。
我在做錯誤的方式?有沒有其他方式可以運行兩個聊天應用程序?
我使用這臺服務器代碼
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');
server.listen(3000);
io.on('connection', function (socket) {
console.log("client connected");
var redisClient = redis.createClient();
redisClient.subscribe('message');
redisClient.on("message", function(channel, data) {
console.log("mew message add in queue "+ data+ " channel");
socket.emit(channel, data);
});
socket.on('disconnect', function() {
redisClient.quit();
});
});
對於使用命名空間 server.js
var nsp = io.of('/debate')
nsp.on('connection', function (socket) {
console.log("client connected"+socket.id);
var redisClient = redis.createClient();
redisClient.subscribe('message');
var redisClient1 = redis.createClient();
redisClient1.subscribe('debate');
redisClient.on("message", function(channel, data) {
console.log("mew message add in queue "+ data+ " channel");
nsp.emit(channel, data);
});
socket.on('disconnect', function() {
redisClient.quit();
});
});
客戶端代碼
var socket = io.connect('http://localhost:3000/debate');
socket.on('message', function (data) {
data = jQuery.parseJSON(data);
console.log(data.user);
$("#messages").append("<strong>"+data.user+":</strong><p>"+data.message+"</p>");
$('#messages').animate({
scrollTop: $('#messages').get(0).scrollHeight}, 200);
});
這是我想要的,但與使用namesapce,我的客戶端不連接。我還使用了socket0(socket.id).emit(channel,data); 這一個連接到客戶端,但不發射數據。 我用名字空間代碼編輯了這個問題。請看一看。 – vinita