Tag: 套接字

node.js webserver和C ++游戏服务器

这个问题可能过于宽泛,但我认为这是一个体面的问题,我不知道如何处理它。 我目前在example.com上托pipe一个网站。 我现在正在使用100%的node.js。 我还在使用socket.io托pipe一个networking化的HTML5游戏(在game.example.com上),这很棒,但是我决定使用C ++(或者可能是Java)来处理游戏服务器,计划从JavaScript翻译服务器逻辑。 我目前最大的问题是,我根本不知道如何连接WebSocket。 我仍然计划使用node.js来提供完整的客户端(HTML和JavaScript),但我希望客户端连接到C ++服务器而不是node.js服务器。 我目前连接到服务器的方式是使用从socket.io的io.connect();获得的套接字io.connect(); 。 我认为这可以保持,我只需要将服务器端的套接字从node.js传递给我的C ++程序,我完全不知道如何做到这一点。 谁能帮我?

一个端口上的NodeJS套接字*和*一个path?

我想build立一个像ws://localhost:1234/mysocket这样的URI的基本套接字(以模仿用Java创build的另一个环境),到目前为止我只能在ws://localhost:1234/我怎样才能得到它主机上的一个特定的url,而不仅仅是一个主机和端口? 这只是文档中基本的NodeJS套接字: var net = require('net'); var server = net.createServer(function (socket) { socket.write('Echo server\r\n'); socket.pipe(socket); }); server.listen(1337, '127.0.0.1'); // <– not sure what to do here? 我特别不要求涉及Socket.IO的解决scheme。 编辑 我觉得也许我真的需要在我的套接字服务器前设置一个代理? 但是这似乎有点奇怪。

Django项目中使用Web套接字的最佳方法是什么?

我正在开始一个需要套接字的新Django项目。 我search了互联网,发现这个和这个教程。 那里也有很多过时的东西。 任何人都可以推荐使用套接字与Django的最佳方法? 我正在使用Django 1.7。 谢谢。

Socket.io断开相closures包的事件和垃圾回收

我有一个基本的实时服务器,使用socket.io。 我的问题涉及到闭包和垃圾收集,以及是否应该打扰在关联数组中存储套接字连接,或者只是将其closures以pipe理连接。 我有一个问题是,如果一个套接字连接断开,是否将相同的套接字连接尝试发送一个消息,如果在断开的套接字调用发射? 换句话说,当你在一个断开的套接字上调用socket.emit()会发生什么? 下面是一些代码,底部的问题: var socketio = require('socket.io); var io = socketio.listen(server); var EE = require('events').EventEmitter; var ee = new EE(); //this is actually initialized elsewhere but now you know what it is var connectedUsers = {}; //associative array to store socket connections by socket.id io.on('connection', function (socket) { connectedUsers[socket.id] = socket; //should I […]

net.Socket.writable,net.Socket.readable属性不是官方node.js API的一部分

我不知道为什么net.Socket.writable和net.Socket.readable属性不是官方node.js API的一部分? 这是否意味着最好不要使用这些属性,因为这是一个可以在未来改变的内部东西?

如何分离node.js中的TCP套接字消息

我正在用TCP套接字切割我的牙齿,并且对消息如何到达我的应用程序感到困惑。 好像他们分手了 任何人都知道如何才能最好地把他们一起回来? 所有消息由换行符分隔(\ r \ n) var stream = net.createConnection(port,host); stream.setEncoding("utf8"); stream.on('data', function(chunk){ console.log('data: ' + sys.inspect(chunk)); }); 转储到控制台的示例如下所示: data: '0' data: '5293800791D04\r' data: '\n' data: '053138007928F1\r\n' data: '05313800012869\r\n' data: '052E3800790E0E\r\n' data: '052E3800010E86\r\n' data: '05223' data: '8007933F5\r\n' data: '05213800791019\r\n' data: '05213800795C795B79265A\r\n' data: '05213800011091\r\n' 我需要在linebreak中打破东西,所以我没有不完整的消息。 有没有办法告诉节点为我做这个? 如果没有,有没有人有这样做的样本?

为什么socket.remoteAddress在'end'事件上未定义?

我有一个简单的TCP服务器,如下所示: var net = require('net'); var PORT = 6346; var server = net.createServer(function(socket) { socket.on('connect', function() { console.log('Client connected: ' + socket.remoteAddress); socket.write('Welcome to the server!\r\n'); }); socket.on('end', function() { console.log('Client disconnected: ' + socket.remoteAddress); }); socket.on('error', function() { console.log('Client error: ' + socket.remoteAddress); }); socket.on('timeout', function() { console.log('Client timed out:' + socket.remoteAddress); }); }).listen(PORT); […]

Socket.IO和HapiJS之间的连接

我们有一个使用HapiJS实现的REST服务器和一个使用Socket.IO实现的Websockets服务器(它们都在单个服务器上运行,但在不同的端口上运行)。 我想通知HapiJS服务器的Websockets服务器发送带有一些数据的事件给特定的客户端。 套接字服务器在端口8081上运行,而REST在8080上。 这个想法是,一个客户做一个行动(POST请求),这是logging在“行动历史”表。 该行为涉及其他用户,因此应在实时发生这种情况时通知他们。 这就是为什么其他用户正在监听websocket连接。 我怎么能告诉套接字服务器发送一个事件到一个特定的客户端,这应该从REST服务器完成? 目前我想了三种方法: 单独的服务器sockets和rest和使用RabbitMQ沟通 我试图实现Socket.IO发射器,但它需要Redis数据库(我仍然不知道为什么)。 当我尝试使用发射器从HapiJS路由处理程序连接到套接字时,我得到: export function* postRefreshEvent(userId) { var connection = require('socket.io-emitter')({ host: '127.0.0.1', port: 8081 }); connection.in('UserHistory').emit('refresh', userId); return {statusCode: OK} } Error: Ready check failed: Redis connection gone from end event. 在RedisClient.on_info_cmd 刷新不在Socket服务器中执行。 我只是看不到日志显示。 做一个特殊的事件,并使用一个普通的socket.io客户端从hapijs连接到websockets并发出新的事件。 样本GIST 。 你有没有想到这样的事情? 我感谢每一个帮助!

如何在Node.js的JavaScript模块文件之间使用事件处理程序?

我目前使用socket.io来发射和侦听客户端JavaScript文件和Node.js服务器文件之间的事件,但我希望能够发出和监听节点服务器和它的模块之间的事件。 我的想法是它看起来像这样: 节点服务器: var module1 = require('./module1'); //Some code to launch and run the server module1.emit('eventToModule'); module1.emit('moduleResponse', function(moduleVariable) { //server action based on module response } 模块文件: var server = require('./server.js'); server.on('eventToModule', function() { //module response to server request } server.emit('moduleResponse', moduleVariable); 这显然是一个简化的版本,但我认为这个function应该是可用的。 我是否需要将模块文件设置为第二台服务器? 如果是这样,那会是什么样子? 我也尝试使用var socket = io.connect('http://localhost:3000'); (这是我使用的代码,允许客户端连接到节点服务器)而不是server并让module1侦听module1送到socket但也没有工作。 第二次尝试(仍然不工作): server.js //other requirements var […]

用node.js中的net.createConnection(port,)创build一个tcp套接字

这里的任何人都可以给我几个在node.js中使用套接字的指针? 可以打开一个tcp连接说在端口8000上的172.0.0.1例如使用net.createConnection(端口,主机) var net = require('net'), querystring = require('querystring'), http = require('http'), port = 8383, host = 172.123.321.213, path = /path/toService, _post = ''; var server = http.createServer(function(req, res) { if(req.method == 'POST') { req.on('data', function(data) { body+=data; }); req.on('end', function() { _post = querystring.parse(body);//parser post data console.log(_post); }) } var socket = net.createConnection(port, host); […]