Tag: websocket

SocketRocket崩溃Node.js WebSocket

我写了一个简单的Node.js WebSocket聊天服务器 。 要运行服务器,我正在使用一个只包含以下行的Procfile : foreman start chat: npm start 。 我还写了一个使用SocketRocket连接到上述服务器的iPhone应用程序。 在applicationDidEnterBackground: ,我在webSocket上调用close 。 而且,在applicationWillEnterForeground: ,我重新创build了webSocket并open 。 当进入后台或前台时,iPhone应用程序似乎崩溃与服务器的错误: chat.1 | events.js:74 chat.1 | throw TypeError('Uncaught, unspecified "error" event.'); chat.1 | ^ chat.1 | TypeError: Uncaught, unspecified "error" event. chat.1 | at TypeError (<anonymous>) chat.1 | at WebSocket.EventEmitter.emit (events.js:74:15) chat.1 | at Receiver.self._receiver.onerror (~/Projects/Chat/node_modules/ws/lib/WebSocket.js:719:10) chat.1 […]

什么是websocket的最佳工具?

我有我的项目中的通知node.js。 我使用socket.io和redis pub / sub。 我喜欢socket.io,因为它给我所有types的传输(websocket,长轮询等)的一个接口,它给了我crossbrowser客户端库。 但是我在调​​试nodejs上的代码时遇到了很多问题。 我经常遇到CPU问题,很难找出原因。 这就是为什么我想用工具而不是node.js也许去或erlang,但我找不到工具,如这些语言上的socket.io

Nodejs服务器Websocket的限制

我想知道是否有某种types的节点服务器可以处理的打开的websockets的限制。 现在我正在用服务器testing几百个节点实例client.js,每个节点都与节点服务器打开自己的websocket连接。 连接大约240个客户端后,出现错误:连接错误:错误:读取ECONNRESET 有没有办法增加或消除这些限制? 我目前正在一台机器上进行testing,但是当testing成千上万个websocket连接时,我们希望转移到Amazon EC2。

从phonegap连接到一个socket.io服务器

我需要一种方法来连接到一个通用的(或至lessiOS和Android)phonegap应用程序的socket.io服务器。 在浏览器中,我将从节点脚本提供html页面,这将允许我访问socket.io客户端的js文件,但是我不能用phonegap来完成,因为html必须打包在手机上运行。 在做了一些研究后,似乎我需要远程访问socket.io客户端js,但是每次尝试都会导致错误。 这里是服务器代码(基于http://socket.io/get-started/chat/提供的示例代码) var app = require('express')(); var http = require('http').createServer(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.send('Loaded'); }); io.on('connection', function(socket){ console.log("A person connected!"); }) http.listen(8080, function(){ console.log("listening on port 8080…"); }); 这里是没有添加phonegap脚本和东西的客户端代码: <script type="text/javascript" src="socket-io/socket-io.js"></script> <script type="text/javascript"> var socket = io.connect(); </script>

如何在socket.io和node js上保护用户的“通道”?

我创build了一个社交networking,这个networking发展得非常好。 我想使用socket.io和节点实现实时通知。 好。 已经做到了,而且这样工作… USER发送消息给用户B,比节点服务器通过发送通知写入到用户B的信道。 浏览网站时,每个用户连接到自己的频道: <script type="text/javascript"> var socket = io.connect( 'https://notificationserver.com/' ); socket.on( 'notifications_USERID', function( data ) { var data_type=data.data_type; //sample if(data_type=="message"){ $.notify("You got a new message", "success"); } }); </script> 很简单。 用户的频道是notifications_USERID。 这不是安全的场外。 如果有人将html页面保存到电脑并加载,他们将获得特定的用户通知。 那么,什么才是最好的方法才能使其安全和可访问只有真正的login用户? UPDATE 我使用curl将数据发送到节点服务器,如下所示: $curl = curl_init(); $data = json_encode(array("receiverid"=>$uid,"secret"=>"SOMESECRET")); curl_setopt($curl, CURLOPT_URL, "http://notificationserver:1334"); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); […]

node.js / socket.io:重新连接刷新表?

我有node.js和socket.io在DataTables表上执行实时更新。 当一行被编辑时,其他客户端看到行的更新而不刷新。 这一切都运行良好,但是我不知道如何在断开连接后将节点/套接字重新连接到服务器时自动刷新表。 目前,这是发生了什么事情: 转到包含表的页面 让设备睡眠/从服务器断开连接 打开设备电源并查看包含表格的页面 socket.io重新连接到服务器,但表不刷新以获取最新的更改。 我怎样才能得到socket.io重新连接到服务器刷新表? 理想情况下,这个过程看起来像这样: 打开设备电源 socket.io重新连接到服务器,触发CSS“Loading …”叠加,以防止用户对表进行更改 socket.io刷新表以显示最新的内容 CSS“Loading …”叠加closures 服务器端脚本: console.log('Starting the server'); var app = require('express')(); var express = require('express'); var fs = require("fs"); var server = require('https').createServer(SSL, app); var io = require('socket.io')(server); server.listen(100); io.on('connection', function (socket) { /*socket.emit('news', { hello: 'world' }); /socket.on('my other event', function […]

在服务器和任意NodeJS进程之间创buildWeb套接字stream

在localhost:5000上运行服务器,我想通过web套接字从另一个NodeJS进程连接到该服务器。 从我的networking套接字的经验,我总是需要服务器对象来创build一个Web套接字服务器。 var http = require('http'); // create http server var server = http.createServer(function(req, res) { // serve files and responses … }); // Socket.io server listens to our app var io = require('socket.io').listen(server); // Send current time to all connected clients function sendTime() { io.sockets.emit('time', { time: new Date().toJSON() }); } // Send current […]

什么时候使用http over web套接字更合适?

我使用的是带有MEAN堆栈的Socket.IO,它对于低延迟和双向通信非常好,但是如何将它用于相对静态的数据以及dynamic性呢? 我的假设是,发送更多dynamic内容会更加方便。 这就是说,一旦套接字连接build立起来,通信的数量有多相关呢? 在用户与应用程序直接交互的过程中,当连接不断build立时,是否有一段时间更适合使用http? 谢谢!

使用Redis在Laravel 5.1中广播事件错误

我已经开始使用Laravel 5.1,它非常棒,只是想通过使用NodeJs作为服务器和Redis作为驱动程序来遵循这个指南来实现新的“Broadcasting Event”function: http://blog.nedex。 io / laravel-5-1-broadcasting-events-using-redis-driver-socket-io / 。 当我触发实现ShouldBroadcast接口的事件时,我收到一个错误:“从服务器读取行时出错[tcp://127.0.0.1:4365]” 4365 – 服务器正在运行的端口(侦听该端口)。 你有什么想法为什么会发生? 我也试着直接使用Redis: $redis = Redis::connection(); $redis->publish('test-channel', 'msg'); 得到相同的结果,“从服务器读取行时出错[tcp://127.0.0.1:4365]”。 socket.js: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var Redis = require('ioredis'); var redis = new Redis(); redis.subscribe('test-channel', function(err, count) { }); redis.on('message', function(channel, message) { console.log('Message Recieved: ' […]

带有多个命名空间的Socket.io?

我有一个路由,听一个特定的路由ID。 /** * Chat app routes. */ app.get('/games/:id', gameChatController.chatRoom); 根据路由id我可以确定聊天是什么游戏。 我的问题是如何使用此传递到socket.io? 斌/ WWW /* * setup socket.io, and socket-session */ var socketIO = require('socket.io'); var io = socketIO(server); var SessionSocket = require('session.socket.io'); var sessionSockets = new SessionSocket(io, app.sessionStore, app.cookieParser); var setEvents = require('../events'); setEvents(sessionSockets); 事件/ index.js 'use strict'; var redis = require('redis'); var sub = […]