Tag: websocket

讨论:使用node.js / socket.io实现聊天室的最佳方式?

我不是在谈论一般的聊天应用程序,而是专门讨论聊天室的实现。 所以在node.js / socket.io中,我想到了两种方法 为每个聊天室创build一个数组,向数组中的所有用户广播消息 将所有消息广播给所有用户,在客户的PC上确定它们是否属于聊天室,如果是,则接受消息。 1中的弱点是,当你扩大规模时,你会用数组对象淹没服务器的内存,而在我的主机上只使用大约80mb。 2中的弱点是,最终广播给每个人都是昂贵的,而客户机器的泛滥也不会使他们感到高兴。 我相信在如何实现聊天室方面有更好的方法,所以这就是为什么我要求你们帮助我。 我在服务器端首先在客户端寻找性能,而且它必须是可伸缩的。

用于NodeJS的Web Sockets服务器端实现

我不禁感到这个问题必须在某个地方得到解答,但是如果我能find答案的话,我会感到厌烦。 部分问题可能是客户端的讨论太多,我不能看到树木。 无论如何,道歉一边,这是我想要做的。 我需要一个独立于平台的WebSockets的服务器端实现。 我希望它在NodeJS中运行。 现在,我在这个主题上find的99%关于socket.io的内容。 但据我所知,这不是WebSockets,它本身是一个特殊的“额外”协议。 我需要一些“(尚未)标准”的作品。 有一个很好的理由,这是不可议付的,相信我,让我们只是保存带宽:) 所以,我尝试了WebSocket,但是这需要(或者似乎需要python,更糟糕的是Visual Studio)才能在Windows上运行。 我需要一些独立于平台的东西,不需要特殊的东西。 我也尝试过node-websocket-server,但是我根本无法做到这一点。 主页上的例子对我来说是失败的。 它似乎接受连接,但客户端没有看到它,双方都不会发送任何东西,客户端立即将连接视为closures。 事实上,我所得到的只是一个“连接”的callback,然后它似乎死亡。 在debugging模式下运行没有告诉我任何有用的东西,除了一些对象或其他没有flush()方法的内部错误。 我怀疑这是一个已经失效的项目? 所以,我没有想法。 是否有可能说服socket.io纯粹由WebSockets的(非)规范工作? 有没有办法让node-websocket-server的行为,我没有find。 有没有办法解决websocket中的Visual Studio依赖问题,还是有其他一些基于NodeJS的工具可以满足我所有的需求? 哦,另外一件事,我希望这个工具能够和“连接”和平共处,因为我正在使用这个工具来处理我的常规文档。 TIA,Toby

node.js + socket.IO – 套接字不重新连接?

我知道socket.io有一个内置的function,重新连接和一切,但我不认为这是工作 – 正如我从别人看到它也没有为他们工作。 如果用户把他们的计算机hibernate,它会断开连接,然后当他们打开备份时,他们不再连接,所以他们没有任何通知或任何东西,直到他们刷新页面。 也许这只是我做得不对的事情? var io = require('socket.io').listen(8080); var users = {}; ////////////////USER CONNECTED///// console.log("Sever is now running"); io.sockets.on('connection', function (socket) { //Tell the client that they are connected socket.emit('connected'); //Once the users session is recieved socket.on('session', function (session) { //Add users to users variable users[socket.id] = {userID:session, socketID:socket}; //When user disconnects socket.on('disconnect', function […]

使用socket.io将数据从闪存发送到node.js服务器

我在node.js中有一个简单的基于socket.io的服务器,它侦听81端口的套接字(例如)。我用Javascript编写的客户端之间连接和传递数据没有问题。但经过很多尝试,我无法得到我的Flash应用程序连接到服务器并将数据传递给它(我在网上发现了一些例子 – 但所有这些都是基于Flex的,并且使用的类不是基本的AS3库的一部分) 当我试图连接到使用XMLSocket的套接字 – 我得到安全沙箱违规错误 – 我知道我需要加载策略文件(这假设可用使用socket.io),但我不能设法做它 这是我的flash代码: Security.loadPolicyFile("http://127.0.0.1:81/crossdomain.xml"); socket = new XMLSocket("127.0.0.1", 81); socket.addEventListener(Event.CONNECT, onConnect); socket.addEventListener(IOErrorEvent.IO_ERROR, onError); socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityEvent); socket.addEventListener(DataEvent.DATA, onData); 和服务器端代码是 var app = require('http').createServer(function (req, res) {…}) , io = require('socket.io').listen(app, { log: true }) , fs = require('fs') app.listen(81); io.sockets.on('connection', function (socket) { console.log("connection "+socket.id); socket.on("message",function(data){ console.log("data: "+data); }); socket.on("data",function(d){ […]

未定义的socket.io错误不是一个函数

在服务器上安装了websocket和socket.io。 当我加载浏览器页面,我得到这个错误在控制台:未捕获TypeError:undefined不是一个函数(socket.io-1.2.1.js:1) 这里是服务器端代码: // Require HTTP module (to start server) and Socket.IO var http = require('http'), io = require('socket.io'); // Start the server at port 9602 var server = http.createServer(function(req, res){ // Send HTML headers and message res.writeHead(200,{ 'Content-Type': 'text/html' }); res.end('<h1>Hello Socket Lover!</h1>'); }); server.listen(9602); // Create a Socket.IO instance, passing it our server […]

简单的WebSocket应用程序与NodeJS

我要做一个简单的WebSocket应用程序等待客户端连接。 客户端将是Android用户,而应用程序本身就是两个人的简单聊天室。 所以对于Android应用程序,我需要知道WebSocket地址(以ws://或wss://开头)。 我已经有一些网站,我在那里安装nodejs。 但是几天之后,我完全停留在发生什么事以及如何使某件事情成功。 我甚至很高兴看到nodejs捕获任何WebSocket消息,就是这样。 我阅读了关于nodejs和socket.io的一些手册,并且我不知道在哪里得到这个ws://地址并使其工作。 例如,从socket.io聊天手册 ,我们有: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendfile('index.html'); }); io.on('connection', function(socket){ console.log('a user connected'); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); 那已经是简单的websocket应用程序了吗? 在这种情况下,我所期望的ws://地址在哪里? 也许我应该只是上传一堆代码在我的服务器上,并发送查询ws://mydomain.com:3000 ?

NodeJS + SocketIO推送到移动应用程序

我在SocketIO的网站上看到,可以使用SocketIO作为移动设备。 我试图find它的网站上有关如何做到这一点,但我找不到任何文件。 有没有人想出了如何使用SocketIO发送消息到移动设备? 我的猜测是,它必须住在一个WebView或可以运行JavaScript的东西? 编辑如果我不打算使用Sencha或PhoneGap怎么办? 我想要当地人 的Objective-C / Java的。 这可能吗? 添加到select的答案我发现一个Java socket.io客户端https://github.com/benkay/java-socket.io.client

Node.js + AngularJS + Socket.io:推送的数据在控制器中不可用

我已经设置了我的节点服务器以随机间隔推出一些数据,并且数据正在到达客户端/浏览器; 然而,我不知道如何在我的应用程序的控制器访问它。 #node.js file: /server.js (truncated for brevity) var http = require('http').createServer(handler),//refers to handler() fs = require('fs'), io = require('socket.io').listen(http); http.listen(8000); … io.sockets.on('connection', function (socket) { /* DUMMY CODE: this generates fake alerts at random intervals */ (function loop() { var rand = Math…; … setTimeout(function(){ … var alert = { … }; socket.emit('alert', { […]

socket.io重新连接的例子

socket.io文件说我们应该实现我们自己的重新连接? 有没有人有一个简单的重新连接scheme的例子? 这个想法是,如果用户在20秒内重新连接,他应该给同一个socket.io sessionid。

Benchmarkt socket.io

我想基准我的socket.io服务器。 我想testing服务器可以处理多less个并行连接和消息。 但是我的socket.io服务器在几分钟后崩溃了,当时我开始使用大约200个websocket进行基准testing。 我尝试使用node.js的集群模块将进程共享到内核。 当我使用集群模块时,一段时间后有些连接会断开。 我用于testing的服务器是具有以下属性的亚马逊云上的虚拟服务器: 7 GB的内存 20个EC2计算单元(8个虚拟核心,每个2.5个EC2计算单元) 1690 GB的实例存储 64位平台 I / O性能:高 API名称:c1.xlarge 这是基准客户端的代码: var fs = require('fs'); var io = require("socket.io-client"); var host = "http://localhost:3000"; var timeLog = fs.createWriteStream(__dirname+'/public/time.log',{flags:'a',mode:0666, encoding:'encoding'}); var count = 200; var sockets = []; var total = 0; var countTime = 0; var echo = exports; echo.start […]