Articles of 套接字

Nodejs和webSockets,触发事件?

我是新手,我build立了一个标准的networking聊天应用程序,我看到了nodejs,express,socket.io的强大function。 我试图做的是触发从电话到网站的事件,如遥控器。 有服务器的JavaScript监听来自客户端的事件,并触发这些事件的客户端JavaScript,这是我的理解,如果我错了,正确的我。 我在聊天应用程序中了解到,只要通过特定的端口http://my-server-ip:3000/连接到我的服务器,我就可以从任何地方发送一个对象。 基本上所有的事件都在索引页面内,并且连接是server index 。 我试图学习的是如何从外部页面触发事件,我已经看到像http://my-server-ip:3000/ws或类似的东西,这个想法是连接到一个移动接口不是实际的索引或网站本身,而是这个接口与节点服务器通信,使用它作为调度器来触发主索引页面上的事件。 基本上我学到的是server index 。 我不知道如何可以custom-page到server index 。 我看到,在我的app.js,我的理解是,套接字侦听sends在客户端上,然后它发出的消息。 io.sockets.on('connection', function (socket) { socket.on('sends', function (data) { io.sockets.emit('message', data); }); }); 我试图创build一个test.html,它有一个button,我试着听它,这里是一个屏幕截图。 这是我的客户端代码 window.onload = function() { var messages = []; var socket = io.connect('http://my-server-ip:3000/'); var socketTwo = io.connect('http://my-server-ip:3000/test.html'); var field = document.getElementById("field"); var sendButton = document.getElementById("send"); var content […]

Ember.js与Socket.io

我试图在我的节点应用程序视图中实现一个简单的Ember应用程序。 我知道Ember设置和我的套接字工作正常,现在唯一的问题是数据似乎没有被返回,即使它被检索。 这是我有什么: App = Ember.Application.create({ rootElement: '#ember' }); App.Router.map(function() { // put your routes here }); App.IndexRoute = Ember.Route.extend({ model: function() { async.waterfall([ function (callback) { socket.emit('getUserList', { data: null }); callback(null, ''); }, function (res, callback) { var userList = new Array(); socket.on('recieveUserList', function (data) { for(var i=0; i<data.userList.length; i++) { userList.push(data.userList[i].name); } […]

写入后Node.js刷新套接字

我正在Node中实现一个tcp协议。 完整来源: https://github.com/roelandmoors/ads.js/blob/master/ads.js 眼镜: http://infosys.beckhoff.com/content/1033/tcadsamsspec/html/tcadsamsspec_amstcppackage.htm?id=17754 问题是我用这个来发送一个包: this.tcpClient.write(buf); 如果我发送多个命令,那么多个命令合并成一个单独的tcp数据包。 这不起作用。 关于这个问题还有更多的问题,但是他们build议使用一个分隔符。 但是因为我不能改变协议,所以这不是一个选项。 没有一个简单的解决scheme来刷新套接字? socket.setNoDelay()没有帮助。 编辑:我也尝试使用排水事件发送下一个写,但事件永远不会被调用? 更新: 这似乎解决了这个问题,但是非常糟糕,而且现在如果它总是有效的话。 而不是直接写入我写入缓冲区: this.writeFILO.push(buf); 每个周期(?)我正在写封装到套接字stream: var sendCycle = function(ads) { if (ads.writeFILO.length > 0) { ads.tcpClient.write(ads.writeFILO.shift()); } setTimeout(function() { sendCycle(ads); }, 0); }

Node.js,Socket.io:如何获取客户端浏览器的语言?

我正在尝试获取用户使用的语言,以便使用socket.io和node.js为播放video提供正确的声音文件。 我是一个总的初学者与node.js和socket.io。 我用“navigator.language”在客户端获得了语言,并且想要在连接/握手到socket.io时发送它。 var language = navigator.language; var socket = io.connect('http://localhost:1337', { query: language }); 而在服务器端: io.set('authorization', function(handshakeData, cb) { console.log(handshakeData.query); cb(null, true);}); 但是我得到的是: {'en-US': 'undefined', t: '1396002389530'} 我想第二个属性“t”是已添加的握手标识。 但是,如何访问“en-US”? 我的第二种方法是使用模块“locale”( https://github.com/jed/locale ),但是当我使用它时,我总是得到相同的语言,所以我觉得它总是findSERVER的语言。 我想我在请求/响应处理程序中使用它,当一个新的客户端请求该页面,并发送其http头。 var handler = function(req, res) { lang = new locale.Locales(req.headers["accept-language"]); lang=lang.best(supported); console.log(pf); } 我希望你得到我想要做的,也许知道一个更好的解决scheme。 先谢谢你。

节点如何使套接字只接受本地连接?

节点本身而不是防火墙做的最好的做法是什么?

从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>

NodeJS,SocketIO和Express逻辑上下文构build

我读了很多关于Express / SocketIO的信息,这很疯狂,除了直接从app.js发送的“Hello”之外,很less有其他例子。 问题是它在现实世界中不能这样工作……我实际上对一个似乎远离networking给我的逻辑问题感到绝望,这就是为什么我想指出这一点,我确定问会是解决scheme! 🙂 我正在重构我的应用程序(因为使用全局范围放置库等有很多错误); 假设我有一个基于SocketIO和NodeJS的巨大系统。 app.js中有一个启动套接字系统的加载器。 当有人join应用程序时,它需要()另一个模块:它初始化许多被dynamic加载的socket.on(),并转到文件夹中的一些/*_socket.js文件。 这些模块中的每个函数都表示一个套接字侦听器,然后从前端调用它更容易,可能看起来像这样: // Will call `user_socket.js` and method `try_to_signin(some params)` Queries.emit_socket('user.try_to_signin', {some params}); 系统本身工作得很好。 但是有一个问题:将加载所有那些理解前端发送的文件的模块也会传送与req / res(会话,cookies,其他…)链接的库,并且必须这样做,因为被调用的方法是应用程序的核心,并经常需要这些库。 在前面的例子中,我们显然需要检查用户是否已经login。 // The *_socket.js file looks like this : var $h = require(__ROOT__ + '/api/helpers'); module.exports = function($s, $w) { var user_process = require(__ROOT__ + '/api/processes/user_process')($s, $w); return { my_method_called: […]

Node.js + Socket.io如何从PHP接收数据

我有一个小的项目,让用户上传实时数据。 由于我是一个PHP开发人员,我发现使用Node.js和Socket.io非常困难。 我所做的是,我使用PHP作为我的应用程序的主要后端。 从用户接收数据并将其保存到数据库的人员。 用户提交数据后,PHP会将数据发送到node.js应用程序,该应用程序将通过socket.io发送给所有连接的用户。 但是我怎么能这样做? 我的意思是如何node.js没有一个新的数据? 我希望PHP发送数据(通过POST)到Nodejs,然后socket.io将广播它。 我找不到任何工作的例子。 BTW,PHP发送给Node.js的数据将以JSON格式。 有人问这里: NodeJS从PHP服务器接收数据,但我不明白它是如何工作的。

Socket.io触发两个node.js应用程序之间的事件?

我有两个服务器,一个用于后端应用程序,另一个服务于前端。 它们是抽象的,但共享相同的数据库,我需要两个之间使用socket.io互相之间的实时事件。 前端 // serves a front end website var appPort = 9200; var express = require('express'); var app = express(); var http = require('http'); var server = http.createServer(app); var io = require('socket.io').listen(server); io.sockets.on('connection', function(socket) { socket.on('createRoom', function(room) { socket.join(room); // use this to create a room for each socket (room) is from client side […]

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