我有一个nodejs聊天服务器,它有不同的事件“Connection”,“SendChat”,“Switchroom”...
///////////////////////////////////////////////////////////////
// SERVER SETUP
var express = require('express')
, app = express()
, http = require('http')
, server = http.createServer(app)
, io = require('socket.io').listen(server);
server.listen(1214);
var admin_name = '<font color="red">*Admin*</font>';
var users;
// rooms which are currently available in chat
var rooms = ['public'];
io.sockets.on('connection', function (socket) {
// when the client emits 'adduser', this listens and executes
socket.on('adduser', function(username, password){
getLogin(username, password, socket)
});
// when the client emits 'sendchat', this listens and executes
socket.on('sendchat', function (data) {
insertMess(socket.username, data, socket.room);
var nd = data.split(">");
if(nd[0] == 'cmd')
{
switch(nd[1])
{
case 'admin-mess':
//Return message to user
socket.emit('updatechat', admin_name, '<font color="red">your message was sent to all rooms.</font><br>'+nd[2]);
//broadcast message to all rooms
for(var i=0; i<rooms.length; i++)
{
socket.broadcast.to(rooms[i]).emit('updatechat', '<font color="red">'+admin_name+'</font>', '<font color="red">'+nd[2]+'</font>');
}
break;
default:
socket.emit('updatechat', admin_name, 'you try to send a wrong command...');
break;
}
return;
}
// we tell the client to execute 'updatechat' with 2 parameters
io.sockets.in(socket.room).emit('updatechat', socket.username, data);
});
socket.on('switchRoom', function(newroom){
console.log('--> '+socket.username+" joined the room : "+newroom);
// leave the current room (stored in session)
socket.leave(socket.room);
//get userlist of the room
users = getRoomUsers(socket.room);
//update userlist in room
socket.broadcast.to(socket.room).emit('updateusers', users);
// join new room, received as function parameter
socket.join(newroom);
socket.emit('updatechat', admin_name, 'you are connected to "'+ newroom+'"');
// sent message to OLD room
socket.broadcast.to(socket.room).emit('updatechat', admin_name, socket.username+' has left this room');
// update socket session room title
socket.room = newroom;
socket.broadcast.to(newroom).emit('updatechat', admin_name, socket.username+' has joined this room');
socket.emit('updaterooms', rooms, newroom);
//socket.broadcast.to(newroom).emit('updateuserlist', socket.clients(newroom));
users = getRoomUsers(socket.room);
//update userlist in room
socket.broadcast.to(socket.room).emit('updateusers', users);
//update userlist for client
socket.emit('updateusers', users);
});
// when the user disconnects.. perform this
socket.on('disconnect', function(){
// echo globally that this client has left
socket.broadcast.emit('updatechat', admin_name, socket.username + ' has disconnected');
socket.leave(socket.room);
console.log('<-- '+socket.username+" has disconnected".info);
//get userlist of the room
users = getRoomUsers(rooms[0]);
//update userlist for client
socket.broadcast.emit('updateusers', users);
});
});
...
Thx很多!
您需要客户端库来连接到服务器。您可以在domain.com/socket.io/socket.io.js获取它并将其缓存到本地。从那里您可以访问全局io,然后连接到:
var socket = io.connect();
将库复制到您的应用程序中,并提供每x天/周获取最新版本的后台服务可能会更好。
问题内容: 在我的 主服务器上 ,我从可通过api访问的外部/单独的 redis服务器中 获取数据 。但是,api是不安全的。而且由于我希望将 Redis服务器 分开,因此该技术不适合我的情况。 在我来说,我想有2台独立的服务器, 一个 和 乙 。 A 应该在不使用api或url调用的情况下从 B 加载数据…而是应使用 port (例如)。这样,服务器 乙 只能从访问的 一个 。 我希望这种方法适
我想连接到树莓Pi节点。我从网络外部设置的js服务器。 我的路由器声称端口是开放的。我尝试在127.0.0.0、0.0.0.0和我的公共IP地址运行服务器。 我曾尝试使用ngrok打开端口8080,服务器在其中托管一个简单的网页,但尝试访问myIP:8080不起作用。 有人能帮我吗?
问题内容: 当我使用节点mysql时,在12:00到2:00之间出现错误,表明服务器已关闭TCP连接。这是完整的消息: 有解决办法。但是,以这种方式尝试后,问题也会出现。现在我不知道该怎么办。有人遇到这个问题吗? 这是我按照解决方案编写的方式: 问题答案: 尝试使用以下代码来处理服务器断开连接: 在您的代码中,我错过了之后的部分
但是添加应该在GKE集群中为服务提供一个sidecar,并允许它连接到SQL?
所有运行在localhost上,node到web页面的端口为8001,node.js到可执行文件的端口为8002。请原谅代码,因为我已经试着让这个工作了几天,现在有点难看。 要执行的cmd可执行文件及其参数来自工作的网页。我可以启动EXE。EXE希望每个发送的消息都有一个ACK,这就是为什么您会看到代码将其发回。 我在网页上设置和更新元素时有一个间隔。我还有一个设置消息(msg)的元素。
我正在尝试连接两个docker容器,一个是posgresql,另一个是python flask应用程序。两者都链接正确,python应用程序中的所有连接变量都直接取自postgres容器中通过链接公开的连接变量,并且与检查postgresql容器时发现的连接变量相同。当我将psql与连接字符串中的精确参数一起使用时,即: 成功连接到postgres容器中的数据库,因此我知道postgres正在通过