Articles of 套接字

Socket.IO消息不更新angular度variables

我有一个与客户端上运行的AngularJS的socket.io客户端服务器设置。 // Server.js var io = require('socket.io')(server); io.on('connection', function (socket) { socket.on('message', function (msg) { //console.log(msg); console.log(msg); io.emit('message', msg); }); }); 正如所观察到的,它本质上是以variablesmsg存储的数据发出message事件。 然后我有以下客户端代码。 var container = angular.module("AdminApp", []); container.controller("StatsController", function($scope) { var socket = io.connect(); socket.on('message', function (msg) { console.log(msg); $scope.frontEnd = msg; }); }); 我现在面临一个奇怪的问题。 当我写下面的代码片段来打印frontEnd ,它不会显示出来。 但是console.log(msg); 工作,它显示了从variablesmsg发出的数据。 <body ng-app="AdminApp"> <div ng-controller="StatsController"> <p>{{frontEnd}}</p> […]

将套接字服务器从Node.js移植到C#

我在Node.js中为多用户人工智能应用程序构build了多个套接字服务器应用程序。 我们正在寻找每个盒子1K到10K的活动sockets连接。 但是,即使空闲并且有0个活动连接,我的一些服务器在Unix上运行时也会消耗50-100 MB的内存。 我敢肯定,像C#或C ++这样的明智的平台,这应该是接近0 MB。 所以我们正在考虑把一个港口变成一个“更好”的平台。 现在让我澄清我的用例: 这不是一个“networking服务器”。 没有文件被送达。 我们做大量的CPU密集型数据处理,并且某些部分已经被移植到C ++,并通过本地模块进入节点。 我们不需要访问太多的I / O(在大多数情况下,访问一些文件,在某些情况下,没有,我们也不使用RDBMS) 我们去节点,因为它是Unix友好(不像.NET),似乎易于使用。 但是由于目前的内存消耗,我们需要评估其他选项。 许多人已经将Node.js与ASP.NET进行了比较,但我需要用C#或C ++构build套接字服务器。 我有与.NET和C ++的重要经验。 有像SuperSocket (由Redgate和Telerik使用)在.NET中处理所有低层次的东西的库。 我将不得不为C ++find一个类似的套接字框架。 所以把这一切放在一起,使用.NET或C ++优于Node.js有什么优势? 考虑到我的服务器高度受CPU限制(不受I / O限制),使用.NET / C ++的好处是显着的,还是应该坚持使用Node.js? 有关将Node.js应用程序移植到C#或C ++的其他意见? 赏金:我需要在C#和/或C ++中build议和推荐的套接字服务器库/实现/示例应用程序。 必须是开源的。 我需要它是高性能,asynchronous和无错的。 必须支持二进制数据传输。 必须在Windows上运行。 Unix是一个奖金。

有没有任何websocket插件nodejs

有没有任何websocket插件nodejs; 我想开发一些使用websockets的应用程序。

在nodejs中,我该如何检查一个端口正在侦听还是正在使用

我会在这里非常具体,希望了解这一点的人们可以编辑来改写一般情况。 目前,当你运行“节点debugging”,它产生一个进程监听端口5858.然后在父,试图连接到该端口。 但是,如果您正在运行另一个“节点debugging”会话,则当前“节点debugging”挂起,因为该端口正在使用中。 具体来说,你看到的消息是: $ node debug example/gcd.js 3 5 < debugger listening on port 5858 > connecting… 更好的办法是检测端口正在使用中(没有连接到它可能会混淆正试图连接现有debugging器的另一个客户端)。 编辑:接受的解决scheme现在在trepanjs 。 另请参阅节点JS – 如何通过Einaros WS套接字模块打开套接字?

在socket.io中使用restify时,'headers already sent'错误

我正在跟随正式的游戏指南来使用socketio和restify。 api.js var mongoose = require('mongoose'); var restify = require('restify'); var fs = require('fs'); var server = restify.createServer({ name: 'myapp', version: '1.0.0' }); var io = require('socket.io')(server); server.get('/', function indexHTML(req, res, next) { fs.readFile(__dirname + '/sockettest.html', function (err, data) { if (err) { next(err); return; } res.setHeader('Content-Type', 'text/html'); res.writeHead(200); res.end(data); next(); }); }); io.on('connection', function(socket){ […]

WebSocket连接失败:在WebSocket握手期间出错:意外的响应代码:400

我正在尝试将Socket.io与Angular集成在一起,并且在从客户端到服务器端进行连接时遇到困难。 我已经看过其他相关的问题,但我的问题是本地发生的,所以没有中间的Web服务器。 这是我的服务器代码的样子: const app = express(); const server = http.createServer(app); const io = require('socket.io').listen(server); io.on('connection', function(socket) { socket.emit('greet', { hello: 'Hey, Mr.Client!' }); socket.on('respond', function(data) { console.log(data); }); socket.on('disconnect', function() { console.log('Socket disconnected'); }); }); 我使用Grunt按以下顺序加载客户端JavaScript文件: dist: { src: [ public/bower_components/angular/angular.min.js, … public/bower_components/socket.io-client/dist/socket.io.min.js, public/bower_components/angular-socket-io/socket.min.js, … ] } 然后在我的控制器中: function MyController($scope) { let socket = […]

将更新通知发送给使用socket.io的特定用户

以下是前端的代码,其中storeSelUserId包含用于发送消息的user_id – FYI – 节点版本1.1.0 // Socket Notification var socket = io('http://localhost:6868'); socket.on('connection', function (data) { socket.emit('send notification', { sent_to: storeSelUserId }); }); 以下是路由文件中的服务器代码 – var clients = {}; io.on('connection', function (socket) { socket.emit('connection', "Connection Created."); socket.on('send notification', function (sent_to) { console.log(sent_to); }); }); 在控制台sent_to显示user_id的数组。 现在成为socket.io的入门者,我坚持解决scheme,我如何发送消息到这些特定的用户ID。 我search,发现我需要推动每个用户的sockets,所以我改革它 – var users = []; io.on('connection', function (socket) […]

从Node.js中的TCP套接字读取string时出现问题

我已经实现了使用TCP套接字进行通信的客户机/服务器。 我写入套接字的数据是string化的JSON。 最初一切正常,但是,随着写入速度的提高,我最终遇到了JSONparsing错误,其中客户端的开始部分在旧部分的末尾接收到新写入的开始。 这里是服务器代码: var data = {}; data.type = 'req'; data.id = 1; data.size = 2; var string = JSON.stringify(data); client.write(string, callback()); 以下是我在客户端服务器上接收此代码的方式: client.on('data', function(req) { var data = req.toString(); try { json = JSON.parse(data); } catch (err) { console.log("JSON parse error:" + err); } }); 我收到的错误率是: SyntaxError: Unexpected token { 这似乎是下一个请求被标记到当前结尾的开始。 我试过使用; 作为每个JSON请求结束处的分隔符,然后使用: […]

AngularJS:通过https与socket.io聊天

我正在运行这个示例聊天应用程序https://github.com/btford/angular-socket-io-im使用socket.io/angular/node来做一个基本的即时通讯客户端。 但是,当我尝试通过https工作时遇到麻烦。 没有套接字事件在服务器上被捕获,所以没有聊天消息被发送到客户端,并且用户不能join房间。 我也在socket.io.js的客户端上得到这个错误: Uncaught TypeError: Cannot call method 'onClose' of null 我创build了一个在端口8000上侦听的express https服务器,并将套接字定义修改为: var socket = io.connect('https://localhost:8000',{secure: true, port:8000}); 在js/services.js和/bower_components/angular-socket-io/socket.js 不太清楚如何去解决这个问题。 提前致谢!

如何解决在sails.js的SocketIO握手过程中没有可用的有效会话?

我正在使用sails.js开发一个iOS应用程序的API,并使用websockets进行实时通信。 问题是,我不能让套接字握手工作。 控制台中显示“此套接字中没有可用的有效会话”错误。 当我谷歌search了一下,我才知道我需要设置一个有效的cookie。 由于我的客户端不是基于浏览器的Javascript,我不能设置任何cookie。 我甚至在config/sockets.js设置了authorization: false 有没有解决这个问题? 还是selectSails JS这个任务是一个错误? 顺便说一句,这些是我遇到这个问题的一些链接: https://github.com/balderdashy/sails/issues/1062 https://github.com/balderdashy/sails/issues/995 https://github.com/balderdashy/sails/issues/1003