Articles of socket.io

如何在rails中提供socket.io客户端文件

我正在写一个rails应用程序,并且我想使用node.js和socket.io将聊天function集成到我的应用程序中。 我打算让我的Rails应用程序部署在一台服务器上,而我的聊天部署在一个更小的服务器上(为了省钱)。 我的推理是,如果一个聊天消息需要30s发送,那么确定是可以的,但是一个页面需要30s加载是不行的。 无论如何,为了这个工作,我需要Rails来服务于socket.io客户端文件。 如果我的小型节点服务器提供客户端文件,那么小型服务器将会阻碍较大的服务器。 我有一个基本的聊天原型启动并运行,但它只适用于服务于客户端文件的节点。 为了让rails提供客户端文件,我需要做些什么? 先谢谢了。

客户端数据不传递给服务器

预警,我是Javascript的新手,node.js,socket.io。 到目前为止,这是相当惊人的。 🙂 我正在尝试创build一个简单的用户界面。 客户端将input他们select的用户名,点击button,将触发一个事件,将发送用户名到服务器放入一个数组。 客户端连接正常,发生握手。 然而,套接字不会将数据发送到服务器。 服务器: var io = require('socket.io').listen(8888); var players = []; io.sockets.on('connection', function (socket) { socket.on('adduser', function(username) { players.push(username); console.log("Received: " + username); }); }); 客户: var socket = io.connect('/socket.io/socket.io.js'); function usernameSubmit(){ console.log("Button pressed"); var textfield = document.getElementById('usernamefield'); var username = textfield.value if (username != ""){ console.log(username); socket.send('adduser', username); console.log("Username […]

偶尔出现ECONNREFUSED错误

我刚刚开始使用nodejs并使用它创build一个服务器。 客户端使用socket.io连接到它,接收作业进行处理,并将结果发送回nodejs服务器。 但是,服务器偶尔会崩溃,出现以下错误: node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: connect ECONNREFUSED at errnoException (net.js:614:11) at Object.afterConnect [as oncomplete] (net.js:605:18) 我不知道是什么原因造成的。

套接字挂在dnode中

我开发了一个使用dnode的客户端/服务器双向通信。 当客户端连接到服务器时,我保持连接,以便服务器可以使用此连接在需要时调用客户端上的方法。 有时连接似乎变得不活跃,我需要手动重新启动客户端。 连接可以通过一些特定的选项保持活动吗? (我虽然每3秒重新连接将做的伎俩,但似乎并非如此)。 服务器就像 dnode(function (remote, conn) { conn.on('connect', function (){ // THIS METHOD IS NEVER CALLED !!! I DON'T KNOW WHY console.log("connection"); }); // Connection starts conn.on('ready', function () { // Keep remote in a hash for later usage … }); // Connection ends conn.on('end', function(){ // Remove remote object from hash […]

socket.io客户端不接收数据包

客户端: App.socket = io.connect('http://127.0.0.1:4000'); App.socket.on('draw', function(data) { console.log("drawing"); return App.draw(data.x, data.y, data.type); }); … $(document).keyup(function(e) { if (e.keyCode == 27) { App.socket.emit('drawing'); } }); 服务器端: (function() { var io; io = require('socket.io').listen(4000); io.sockets.on('connection', function(socket) { socket.on('drawing', function() { socket.broadcast.emit('draw', { x: 1, y: 1, type: "test" }); }); }); }).call(this); 所以代码做的是检测“esc”键被按下。 当esc键被按下时,客户端发出一个叫做绘图的包到服务器。 这工作,并且服务器确实收到数据包。 此外,服务器接收到“绘图”数据包后,广播一个名为“draw”的数据包,但由于某种原因,在客户端,服务器广播后没有收到绘图数据包。 我一直盯着这个代码好几个小时,看起来很简单,我希望能有一个新的眼睛能够抓住这个简单的错误。 […]

在另一个JS文件中加载JavaScript文件

我使用node.js和socket.io并做一个服务器/客户端的事情。 在我的服务器,是因为它不在一个网页上,有没有办法我可以加载最新的文件(或最新的jQuery?),所以我可以在我的服务器js文件中使用jQueryfunction。 我试着做npm install jquery然后将jquery文件夹拖到我的网站node_modules文件夹中。 然后在我的文件顶部,我把var $ = require('jQuery'); 然后我运行它,我得到错误Cannot find module 'location' 谢谢

通过networking套接字快速发送base64string?

我试图创build一个videostream,通过捕获和JPEG图像转换成base64string,然后发送它使用websockets(Nodejs和socket.io)在HTML5canvas上绘图。 这是C#中用于捕获屏幕并使用SocketIO4Net库发送的代码: Client directSocket = new Client("http://IPHERE"); directSocket.Connect(); private void timer1_Tick(object sender, EventArgs e) { Rectangle bounds = Screen.GetBounds(Point.Empty); Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height); using (Graphics g = Graphics.FromImage(bitmap)) { g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size); } pictureBox1.Image = bitmap; // Convert the pictureBox into a byte[] array System.IO.MemoryStream stream = new System.IO.MemoryStream(); pictureBox1.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] imageBytes […]

如何扩展使用Nowjs的Heroku应用程序?

将我的Web应用程序扩展到Heroku上的两个Web应用程序可以打破Nowjs / Sockets.io。 我使用全新的堆栈,这对我来说是新的,一切都很好,直到我添加第二个Web进程。 Node.js仍然响应良好,但Nowjs停止响应。 我在浏览器中得到了503个响应 GET musicbacon.com/socket.io/1/?t=1339117661910 dyno=web.2 queue=0 wait=0ms service=2ms status=200 bytes=82 2012-06-08T01:07:42+00:00 heroku[router]: Error H13 (Connection closed without response) -> GET musicbacon.com/socket.io/1/websocket/12401614301555103827 dyno=web.2 queue= wait= service= status=503 bytes= 在服务器上。 我认为Nowjs(它是Socket.io之上的一个抽象层)在我的Node.js服务器的旁边创build了它自己的服务器。 缩放Heroku旋转了一个新的Node.js服务器虚拟机,但由于Now.js不兼容分布式环境,它只是死亡。 希望我错过了一些东西,我可以扩展Now.js,因为Heroku的web进程在我的经验中一次只能处理大约60个用户。 完整股份是:Heroku Node.js Express Jade Now.js Postgres 错误H13参考: https : //devcenter.heroku.com/articles/error-codes#h13__connection_closed_without_response

Heroku + Socket.io有时候有时候不起作用

我已经阅读了一些文章,并知道你需要xhr-polling for socket.io才能在heroku上工作,这就是我迄今为止所做的: var app = require('http').createServer(); var io = require('socket.io').listen(app, {origins: '*:*'}); io.configure(function () { io.set("transports", ["xhr-polling"]); }); io.sockets.on('connection', function(socket) { console.log("Connected…"); socket.on('message', function(message) { console.log("Message in:" + message.toString()); } } 这个代码有时可以工作,有时停在console.log("Connected…") ,不会进入socket.on('message', function(message) 。我不知道为什么它只有在感觉我也尝试重新启动应用程序,但仍然无法正常工作。

在node.js中,使用redis的socket.io – 这个redis是否可用于正常的redis使用?

我的理解是, socket.io使用redis socket.set( 'var', val1 ); var val2 = socket.get( 'var' ); 但redis不在node_modules socket.io使用它自己的私有redis实例吗? 如果没有,可以通过redis客户端访问存储在redis socket.io值?