Tag: 聊天

在Node.js和Socket.io聊天应用程序中parsing表情符号

我已经创build了基于这个项目的聊天应用程序,但是我现在要做的就是为表情符号parsing器。 例如,如果我写下如下的东西: What's up? 🙂 这可以parsing为“这是怎么回事? 而且,当有人访问房间时,来自该房间的所有消息也需要被parsing。 什么是最简单的方法来做到这一点? PS应用程序没有数据库。

聊天*服务器*在embedded式平台上

我目前正在build立一个聊天服务器(meebo风格)。 架构是这样的。 BitLbee over libpurple在主机B上 。 它是一个数据中心平凡的服务器。 用户通过主机A上的web服务器(如meebo)与bitlbee进行通信。 该Web服务器的后端维护聊天会话。 它只是将用户命令转换为适当的bitlbee文件并发送回主机A. 这里最重要的部分是主机A将被部署在embedded式Linux中。 我有2个问题 。 为了保持聊天会话的持久性,我正在考虑使用node.js。 由于使用持续连接创build实时应用程序要容易得多。 但是我怀疑它是否支持这样的平台。 如果我使用C而不是node.js(我没有使用任何Web服务器),我可以通过libirc与主机A的irc服务器通信 。 但是,我如何实现C中的所有Web服务器function(如会话,URL / cookie / post数据parsing等)? 另外,如果你认为我的方法是错误的或有更好的方法,请告诉我如何改善这种架构? 注意:这不是一个高容量的聊天服务器。

Js节点 – socket.io聊天修改

这是一个简单的聊天示例。 我如何修改脚本以便: 在前5s内,第一个用户可以发送消息,在接下来的5s中,用户在接下来的5s内不能发送消息(当第一个用户不能发送消息时),第二个用户可以发送消息,第一个用户得到一个div(apIdv1)来显示index.html: <script src="/socket.io/socket.io.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> <script> var socket = io.connect('http://localhost:8080'); // on connection to server, ask for user's name with an anonymous callback socket.on('connect', function(){ // call the server-side function 'adduser' and send one parameter (value of prompt) socket.emit('adduser', prompt("What's your name?")); }); // listener, whenever the server emits 'updatechat', this updates the […]

Socket.io私人消息,同时有多个用户在线

因此,我正在构build一个聊天应用程序,并需要帮助了解如何发送私人消息。 这是我的代码,“发送消息”。 users = {} socket.on('send message', function(data, callback){ var msg = data.trim(); console.log(users); console.log('after trimming message is: ' + msg); var name = req.params.posteruname;//reciever var msg = msg; if(name in users){ var message = new Chat({ msg : msg, sender : req.user.username, reciever : name }).save(function(err, savedMessage){ if(err) { users[name].emit('whisper', {msg: "Error, some tried […]

如何在vps中运行node.js应用程序

我用express和socket.io创build了一个node.js聊天应用http://socket.io/get-started/chat/ 我在我的本地服务器上运行成功的聊天应用程序。 我必须在我的VPS中部署它。 有什么步骤要做? 我在我的VPS中安装了node express和socket.io,并将所有内容上传到了服务器。 我在puTTY中运行命令$node index.js 。 它说在3000端口上听。 但是当我去那个url获取错误http://******.in/socket.io/socket.io.js 404(未find) 但它运行在我的本地主机非常好。 index.js var app = require('express')(); var url = require('url'); var server = require('http').Server(app); var io = require('socket.io')(server); var numUsers=0; var users={}; app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); server.listen(3000, function(){ console.log('listening on *:3000'); }); io.sockets.on('connection',function(socket){ console.log('connected'); socket.on('send message',function(data,callback){ var msg=data.trim(); if(msg.substr(0,1)=='p'){ msg=msg.substr(1); […]

socket.io轮询404错误

我尝试在我的Web服务器上学习socket.io。 我在我的服务器上安装了node.js和socket.io。 我已经准备好了网站我的套接字javascript代码工作正常 – 在控制台上听听端口3000 – 但是当我尝试运行示例聊天应用程序时,我得到了“socket.io/?EIO=3&transport=polling&t=1423949334574-31 404(Not Found )“错误。 哪里错了? var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); io.on('connection', function(socket){ socket.on('chat message', function(msg){ io.emit('chat message', msg); }); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); 有我的index.html脚本: <script> var socket = io("http://localhost:3000"); $('form').submit(function(){ socket.emit('chat message', […]

聊天室应用与Node.js后端

我想写一个聊天室应用程序(Web客户端以及Android应用程序)。 这个聊天室应用程序将有多个聊天室,用户可以随时join/离开其中的任何一个。 用户发送的消息将被广播给聊天室中的每个人。 我最近开始学习node.js,我想在这个应用程序中build立后端。 我做了一些研究,并find如何做到这一点的教程。 几乎所有我看到的教程都使用socket.io。 这是做这样的应用程序的最佳方式? 也许我并没有完全理解socket.io是如何工作的,但是我遇到的问题是,实现说你必须添加socket.io.js客户端库来与服务器进行通信。 这是否意味着只有web客户端可以交streamandroid应用程序? 我是否必须使用socket.io将我的Web服务器和服务写入同一个包中,还是可以创build一个独立的服务?

NodeJS socket.io广播

我是NodeJS的新手,但是我已经在一定程度上取得了进展。 就这样,我创build了一个带有socket.io的nodeJS聊天服务器,而客户端应用程序是一个Java桌面应用程序。 每次用户注销时,服务器都会发出广播,通知所有注销注销事件。 我担心的是,随着时间的推移,如果连接数十万用户,则可能会消耗太多的服务器资源,以在用户每次注销时不断地向每个机构广播(其速度可能高于一个日志每秒钟)。 鉴于上述情况,我正在考虑重构代码,以便每次用户注销时,将为注销用户的朋友查询数据库,以便每次只有用户的朋友将被通知退出整个世界。 但是我不确定是否有更好的方法去处理(考虑每个注销时的数据库查询),所以我把这个问题提供给公众。 哪种方法是更好的做法?

如何缩放“读取的消息”和“正在写入…”的聊天function?

我已经看到很多关于如何scale chats的问题,但是他们似乎都没有解决这两个function的问题,这些function可能会显着增加http请求的数量。 例: 当n个人正在聊天时,每个人都发送消息,这是1个HTTP请求,以及(n-1)被推回的消息。 现在,每当有人“读取”消息(例如在$(input).on('focus')时触发),它是(n-1)倍新的http请求和(n-1)²被推回的消息。 每次有人发信给他开始写的其他人,这是一个新的HTTP请求,其次是n-1 websocket消息。 但是,既然每条消息都有一个机会,他根本没有发送任何东西(但是要清除他的消息,而不是写作),我们可以假设它至less是(n-1)*k k>1表示在发送之前写/擦除他的作品的人的倾向 考虑4人聊天,其中一人发送一条消息的聊天。 案例一 – 没有function| 1 http请求, 3 websocket消息 情况二 – “留言阅读function” 只有 | 4 http请求, 12 websocket消息 情况三 “ 正在写…function, k=1 | 2 http请求, 6 websocket消息 总结: 1 http / 3 ws vs 6 http / 18 ws 仅用于一个消息并且假设k = 1 我在我的应用程序中使用node.js & pusher ,在我开始实施这两个之前,我想确保我的成本不会litteraly爆炸哈哈。 有关Facebook如何做到这一点,数十亿条消息的线索? […]

使用socketio的audio聊天

我在nodejs中是新的。 我正在开发语音聊天应用程序,在应用程序客户端可以说话,他的声音将广播(使用nodejs服务器)到其他客户端,我用socketio从麦克风发送声音到服务器,但我不知道如何接收器声音在客户端,谁能帮我? 用于发送语音的客户端代码(我不知道这是从麦克风发送语音的真实方式): navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; navigator.getUserMedia( {audio:true}, gotStream , onError ); function gotStream(stream) { var context; if (window.AudioContext) { context = new AudioContext(); } else { context = new webkitAudioContext(); } var mediastream = context.createMediaStreamSource(stream); var bufferSize = 2048; var myscriptnode = context.createScriptProcessor(bufferSize, 1, 1); myscriptnode.onaudioprocess = function […]