Articles of websocket

Node.js + ws – websocket意外closures

我有一个Node.js + ws服务器和一个Qt客户端 。 在某些情况下,我遇到意外closureswebsocket连接的问题。 在我的客户端中,我遍历一系列对象并向服务器发送一系列请求。 然后服务器访问数据库,然后将响应写回客户端。 这是(简化的)基本服务器循环: // … var httpServer = http.createServer(//params); var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({ server: httpServer }); // … wss.on('connection', function connection(ws) { ws.on('message', function incoming(msg) { handleRequest(JSON.parse(msg), function (err, result) { if (err) throw err; ws.send(JSON.stringify(result), function ack(error) { if (error) throw error; } } […]

从websocket发送数据到socket.io

我用websocket接口连接到websocket服务器。 如果我想通过我的websocket接口发送数据,我从websocket服务器通过http服务器连接到我的客户端,我应该使用socket.io? 所以最后我会把socket.io连接到http服务器和websocket接口来获取数据,如果有消息会通过socket.io发送给客户端。 这是最好的设置? 代码示例: // Require HTTP module (to start server) and Socket.IO var http = require('http'), io = require('socket.io'); var WebSocket = require('ws'); var ws = new WebSocket('ws://localhost:5000'); // Start the server at port 8080 var server = http.createServer(function (req, res) { // Send HTML headers and message res.writeHead(200, { 'Content-Type': 'text/html' }); […]

无法在android socketio客户端与socketio服务器之间build立连接

我正在尝试使用Socket.IO开发一个聊天应用程序。 我的服务器端是Node.js,安装了express + socket.io库,我的客户端是Android + Web。 我尝试在我的客户端使用所有这些jar子: 'com.github.nkzawa:socket.io-client:0.3.0' – 这是在socket.io网站教程中find一个android到socketio服务器。 'io.socket:socket.io-client:0.6.1' – 在nkzawa android chat demo repository中find。 'com.github.nkzawa:socket.io-client:0.6.0' – 过去的另一个版本,为我工作。 所有这些jar子都没有为Android方面工作。 在我的服务器端,我有最新版本的Socket.IO库的1.3.7,我试着每个上面的jar子连接到它。 我也尝试过使用Socket.IO版本1.3.6,在列表中的第三个jar。 另外我试着改变在Android端的URL到http://10.0.2.2:3000,http://192.168.1.100:3000在这些jar子版本的每个… 笔记 – 请注意 – 我正在使用Android中的genymotion。 我有INTERNET_PERMISSION。 服务器端的socket.io在web浏览器(本地pc)上运行。 这是我的服务器端: var app = require('express')(); var bodyParser = require('body-parser'); var http = require('http').Server(app); var io = require('socket.io')(http); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended:false})); io.on('connection', function(socket){ console.log(socket.id); console.log('Client connected'); […]

使用node-http-proxy在相同的子域下代理节点服务器和websocket服务器

这是我的代理设置: var express = require('express'); var vhost = require('vhost'); var proxy = require('http-proxy').createProxyServer(); var app = express(); var server = http.createServer(app); // route api subdomain to port 2000 app.use(vhost('api.*.*', function(req, res) { proxy.web(req, res, {target: 'http://localhost:2000'}); })); // I need to get websocket requests to ws://api.example.com proxied port 4000 server.on('upgrade', function(req, socket, head) { // […]

Node.js + Socket.IO websockets负载很重

几年来,使用Node.js + Socket.IO开发了一个实时应用程序,并且有相当多的实时消息(每天发送〜200K信息)。 看起来我们已经达到了一个新的负载阈值,由于某些原因,某些用户在Chrome浏览器中的websockets连接正在回退到间隔轮询(jsonp,xhr),即使浏览器支持websocket。 接下来需要在节点事件循环中分析延迟,但目前正在使用netstat cmds大约有2600个并发socket.io连接。 任何想法为什么websockets连接回落到间隔轮询? 我们也看到一些socket.io超时,连接被拒绝,在高峰负载时间。 但服务器上的CPU是合理的(节点进程峰值为25%,总体为45%,并且服务器上有足够的内存空间)。 我目前的理论是在节点事件循环中有一些延迟,即备份套接字连接。 为了减less负载,我正在考虑增加更多的广播发射间,以进一步减less发送/接收的消息总数。 任何其他的想法,赞赏!

Nodejs服务器在几个小时后停止接受连接

我做了一个应用程序来控制同时login,在开始一切正常完美,但是几个小时后,我不能再连接到服务器,我的客户端返回给我以下错误: net :: ERR_CONNECTION_TIMED_OUT,并在服务器端没有发生任何错误,如正确运行…代码如下: 客户端: var socket; function connect(id) { socket = io.connect('http://IP:4200'); socket.on('connect', function (data) { socket.emit('join', id); }); socket.on('messages', function (data) { console.log('MSG: ' + data.toString()); switch (data.toString()) { case "kick": socket.close(); console.log("KICK!"); break; case "duplicate_entry": socket.close(); console.log("Another user connection!"); break; } }); } 服务器端: var express = require('express'); var app = express(); […]

永远保持每100秒后重新启动帆

我已经build立了基于networking套接字的应用程序使用sails js(v0.11.2)和mysql(5.6.22)与sails_mysql_live_connect 。 我已经设置mysql的wait_timeout为GC(垃圾收集器)100秒closures任何未使用的打开连接。 由于wait_timeout,mysql现在正在closuresWeb套接字连接到数据库100秒后,永远重新启动航行,因为数据库连接已closures。 每当mysqlclosures连接时,我都会在sail中出错 有没有任何解决这个问题,而不增加wait_timeout?

如何将一个简单的聊天整合到laravel 5中

我将为我的laravel 5应用程序集成一个聊天服务,但是我坚持以“laravel方式”来完成这个任务,因为为了连接到聊天,需要端口号,我不能通过以laravel路由器的端口号作为参数。 我根据这个http://code.tutsplus.com/tutorials/real-time-chat-with-nodejs-socketio-and-expressjs–net-31708文章做了一个简单的,但function齐全的networking聊天,但现在我不知道如何以及在哪里(哪些目录)放置文件,以便我在laravel中正常工作。 注意:这个聊天服务应该是网站的一个页面,而不是一个单独的服务。 任何帮助如何构build服务将不胜感激! 谢谢!

WebSocketcallback来回答消息

我正在用WebSockets进行简单的练习。 我有一个NodeJS脚本,在WebSocket上侦听,接收文件名,打开文件,并通过WebSocket将文件的内容发送回客户端。 这里是代码: var websocket_server = require('ws').Server; var server = new websocket_server({port: 1234}); var fs = require('fs'); server.on('connection', function connection(socket) { socket.on('message', function request(file_name) { fs.readFile(file_name, function(error, data) { if(error) throw error; socket.send(data, {binary: true}); }); }); }); 在客户端,我使用WebSocket来加载图像并将其显示在页面中: <!DOCTYPE html> <html> <head> <title>My Little Project</title> <script type = "text/javascript"> var ws = new WebSocket("ws://127.0.0.1:1234"); […]

使用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 […]