Tag: socket.io

Express4 + Socket.io 0.9:不同的客户端获得相同的非广播消息

这是一个通过passport.js使用validation的网站。 两个不同的用户连接不同的浏览器,他们要求有关他们的用户名的信息。 服务器获取信息并使用socket.io发回。 一切都像一个魅力,但如果两个客户端同时加载页面,其中一个的信息去两个浏览器,看起来像服务器正在写在同一个套接字。 服务器端: server.js: var express = require('express'); var app = express(); var http = require('http').createServer(app).listen(8000), io = require('socket.io').listen(http); socket.js: module.exports = function(app, io) { … io.sockets.on('connection', function(socket) { … //Build the information about the user and send it back var userData = userInfo(); socket.emit('userInfo', userData); … } } 客户端(包含在index.ejs中的JavaScript文件): var socket = […]

跨源请求阻塞socket.io firefox

我在Firefox中收到以下错误 “跨源请求被阻止: 同源策略不允许读取http://localhost/socket.io/?EIO = 3&transport = polling&t = 1422586440181-21的远程资源,这可以通过将资源移动到相同的域或启用CORS“。 我检查了这些其他堆栈溢出问题,但没有成功。 另外请注意,最新的socket.io中不支持io.set,而我在服务器configuration上的尝试失败了。 Socket.io + Node.js跨域请求被阻止 如何设置socket.io起源限制连接到一个url 如何在Firefox上启用CORS? 我已经尝试将这些语句添加到我的服务器: io.origins('http://localhost:3002') app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next();

如何使用Node.js + Socket.io + Redis在线用户列表,实时/持久消息?

我正在使用一些第三方工具(Moxtra)具有聊天function的应用程序,但它提供了与其他用户使用api聊天的能力,除此之外,我还需要其他几个function如下: 显示在线用户列表。 用户可以发送实时通知(不聊天)给其他在线用户。 用户可以发送消息,这些消息可以是实时的,或者如果用户不可用,它会被保存在某个地方,而当他回来的消息应该是可用的。 以前我用ActiveMQ来通知和消息,但它似乎不是我需要的东西。 现在我已经开始使用node.js,socket.io和redis来处理以上的事情了。 我来解决scheme显示在线用户使用下面的代码 server.js var users = []; var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); http.listen(3000, function(){ console.log('listening on *:3000'); }); app.get('/', function (req, res) { res.sendfile(__dirname + '/'); }); io.sockets.on('connection', function (socket) { socket.on('adduser', function (user) { console.log("adding user : " + user.id); socket.userId = […]

socket.emit()无法发送大数据(30MB)

我使用socket.emit()将数据从服务器传输到某些客户端。 有时我想发送的数据达到了30MB,我只是为了testing而发送给了一个客户端。 我发送的数据是在JSON对象中编码的。 对于较小的数据代码工作。 因此,传输数据失败,实际上没有错误。 Node.js的内存高达1.5 GB,然后过了一段时间,客户端断开连接。 首先,为什么发送30MB数据时内存高达1.5GB? 其次,这是一个浏览器问题,或者它与socket.io有什么关系? 或者我有一个严重的内存泄漏(内存发送时,而不是之前)? 其他的想法和帮助非常感谢:)谢谢! for (var x in candidates) { candidates[x].emit('informUser', { action : action, test : test }); } Action只是自定义事件“informUser”中的另一个标识符。 testing包含数据(testing对象)。

用socket.io-client连接到URL

我有这个演示设置: 在端口8001上运行的node.js WebSocket服务器#1(使用'socket.io') 在端口8002上运行的node.js WebSocket服务器#2(使用'socket.io') 运行在端口8000上的nginx websocket反向代理: 将任何请求redirect到/ wstest1 /到端口8001(服务器#1) 将任何请求redirect到/ wstest2 /到端口8002(服务器#2) node.js客户端(使用'socket.io-client' ,而不是浏览器JavaScript客户端)尝试连接到服务器#1: var socket = require('socket.io-client')('ws://localhost:8000/wstest1/'); 但不能连接。 nginx日志说: 127.0.0.1 – – [06/Feb/2015:16:16:04 +0100] "GET /socket.io/?EIO=3&transport=polling&t=1423235764132-1&b64=1 HTTP/1.1" 404 168 "-" "node-XMLHttpRequest" 所以某处path/wstest1/丢失了。 我怎么能告诉socket.io客户端它应该连接到/wstest1/ ? nginx设置: http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 8000; location /wstest1/ { […]

如何在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在本地UIWebView中无法升级

我已经好几天没有运气了。 任何帮助非常感谢 我意识到这是一个节点问题和iOS问题之间的交叉 – 事先道歉。 我正在尝试使用UIWebView(不是phonegap)在本地iOS应用程序中显示使用HTML5 / JS的简单协作白板。 JS使用socket.io连接到一个Node.js服务器来进行实时的涂鸦。 在浏览器中运行HTML / JS,包括移动Safari浏览器,套接字工作的很好。 但是,当相同的代码在webView中本机运行时,它将连接到服务器,但不会完成升级过程,因此服务器会将连接降级到轮询。 行为与NGINX代理是否正在被使用(它们被正确转发)以及是否使用ws:或wss:相同。 这是一个问题,因为实时绘图创build了太多的传输请求,导致应用程序缓慢,绘图不良,以及socket.io库引发错误: 在“socket.io/socket.io.js 4720行”错误:调用了太多次之后。 我有一个NSURLProtocol的子类来捕获和查看socket.io请求。 我可以修改请求,使服务器开心,但我不知道要修改什么。 输出,显示request.URL.absoluteString,request.allHTTPHeaderFields和request.HTTPBody,以及响应。 z2015-02-13 03:36:07.424 DrawApp[2286:553479] ||————————————————————— 2015-02-13 03:36:07.426 DrawApp[2286:553479] Request URL: http://192.168.0.16:8081/socket.io/socket.io.js 2015-02-13 03:36:07.432 DrawApp[2286:553479] RequestHead: { Accept = "*/*"; Referer = "http://192.168.0.16:8081/mobilechat/16074204562:troy"; "User-Agent" = "Mozilla/5.0 (iPad; CPU OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like […]

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', […]

将消息发送到Socket,从C#客户端到node.js + socket.io服务器

我想通过套接字与c#windows store应用程序客户端发送消息到node.js和socket.io服务器 我的客户端代码是这样的(C#) private async void SendDatatoSocket(string sendTextData) { if (!connected) { StatusText = "Must be connected to send!"; return; } Int32 wordlength = 0; // Gets the UTF-8 string length. try { OutputView = ""; StatusText = "Trying to send data …"; txtblock_showstatus.Text += System.Environment.NewLine; txtblock_showstatus.Text += StatusText; Debug.WriteLine(StatusText); // add a newline to […]

聊天室应用与Node.js后端

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