Articles of 套接字

在node.js中安装Socket.io包

1)安装的节点v0.10.13 X64 (我在Win 8中) 2)用pipe理员权限打开CMD 3)键入npm install socket.io它下载的东西,但它显示最后一个像一个build立错误的东西 。 npm http GET https://registry.npmjs.org/socket.io npm http 304 https://registry.npmjs.org/socket.io unbuild socket.io@0.9.16 npm http GET https://registry.npmjs.org/socket.io-client/0.9.16 npm http GET https://registry.npmjs.org/policyfile/0.0.4 npm http GET https://registry.npmjs.org/base64id/0.1.0 npm http GET https://registry.npmjs.org/redis/0.7.3 npm http 304 https://registry.npmjs.org/base64id/0.1.0 npm http 304 https://registry.npmjs.org/socket.io-client/0.9.16 npm http 304 https://registry.npmjs.org/policyfile/0.0.4 npm http GET https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz npm http GET https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9. […]

在Node.js中读取套接字连接响应

我正在将PHP函数转换为JS以便与Node一起使用。 PHP函数: 将一个部分形成的包作为一个arg 完成数据包 创build一个套接字 通过套接字发送数据包 从服务器读取响应代码 查找数组中的错误代码 将错误代码发回给调用者 除了读取服务器响应的位之外 ,我已经转换了大部分函数。 原始的PHP函数(注释是我对代码的理解,可能不正确) function serverInteractive($buf) { // $buf = partially formed packet $fp = fsockopen($ip, $port , $errno, $errstr, 5); $rs = ''; if (!$fp) return $this -> fsockerror; $packet = pack("s", (strlen($buf)+2)).$buf; // Finalizes the packet fwrite($fp, $packet); // Sends the packet to the server. […]

与node.js,socket.io和redis一对一的聊天应用程序

我目前在node.js和socket.io中有一个聊天应用程序(一对一)。 随着我网站上的用户越来越多,我想在我的聊天应用程序中引入redis。 这是我目前的应用程序的一个小例子: // all requires and connections io.sockets.on('connection', function(socket) { socket.on('message', function(msg) { // code to get receiverssocket io.sockets.sockets[receiverssocket].emit('message', {"source": msg.sendersusername,"msg": msg.msg}); }); }); 现在,我正在试图find如何使用redis来做这个例子,但我找不到一个与redis聊天的例子。 我只能find消息发送给所有用户的例子。 这是我看的一个例子 Simple Chat Application Using Redis, Socket.io, and Node.js 我认为这样做的一种方式是为每个用户接收消息创build通道,但这会导致数千个通道。 任何帮助我怎么能做到这一点? 编辑:添加一些代码 io.sockets.on('connection', function (client) { sub.on("message", function (channel, message) { console.log("message received on server from publish "); client.send(message); […]

如何使用Node.js net.Socket与Postgresql数据库通信就像使用terminal一样

在postgresqlterminal中,我可以键入一个命令并获得响应。 例如: #创build数据库新数据库; 创build数据库 上面我在terminalinput命令“create database newdatabase;”数据库程序响应“CREATE DATABASE” 我正在尝试做同样的事情,但使用节点net.Socket。 换句话说,我想发布命令到我在localhost:5432上运行的postgresql服务器,并通过套接字获取响应。 我的程序成功地build立了与postgresql服务器的连接,并成功地将数据刷新到内核,但是我从来没有得到响应(数据监听器永远不会被触发)。 新数据库也不会被创build。 我也快速浏览了wireshark上发生的事情。 它看起来像sockets得到设置。 我看到我的数据以明文forms发送。 postgresql服务器然后发送一个ACK FIN ACK。 我确认FIN ACK,然后postgresql服务器最后一次确认。 所以我知道postgresql服务器不会发回任何数据。 我的问题是,为什么postgresql服务器会忽略我发送的命令,为什么postgresql服务器不会向我发回任何数据,即使这些数据只是一个错误。 const net = require('net'); const BlueBird = require('bluebird'); BlueBird.coroutine(function* () { var host = "127.0.0.1"; var port = "5432"; var idle_timeout = 10000; var MySocket = new net.Socket(); MySocket.setTimeout(idle_timeout); var data = yield […]

服务器之间的websocket通信

我在Stackoverflow上阅读了很多,但经过一个星期的思考和研究,我正在运行卡住… 所以我真的要问:) 希望我解释正确的问题,如果没有,请说! 问题是simpel。 我需要2个服务器…服务器A – 没有任何东西,然后每15分钟填写一个数据库,服务器B做了从服务器A的数据的东西。 它很容易让服务器B做一个HTTP请求的数据,但我真正想要的是,服务器B从服务器A获得'套接字更新',每当它已经更新数据库数据。 问题是:服务器B不总是在同一个URL上….所以数据库服务器不能简单地做一个get / post请求,因为它不会总是知道它的url。 这就是为什么我希望,服务器B可以启动到数据库服务器的socket.io连接。保持线路对服务器A打开,以便服务器A可以响应其新的数据库数据,通过已build立的套接字连接… 。 所以基本上…是否有可能在2个服务器之间有一个共同的socket.io连接..就像一个客户端之间的服务器呢? 真的感谢!!! 更新:将其清除一点。 我有一个股票数据库..它从交易API获取所有数据,每15分钟。 这台服务器绝不能停止! 它可能,但它的烦人,导致数据将不一致… 我还有另外一个脚本,这个脚本将会一直在开发中。这个脚本对数据库服务器的数据进行了计算。 所以它会有(开发)错误等偶尔..这个脚本不应该停止'数据库股票'脚本…所以我想分开运行他们彼此。 这就是为什么我需要有2个服务器相互连接.. 我的数据库是从一个固定的URL运行..但是我的开发脚本依赖于我在哪里开发.. 也许有一个更好的解决scheme,我想达到什么..?

Socket.io中的通道

我试图通过Node.js服务socket.io( http://socket.io/ )广播一条消息到所有订户的某个子集。 更确切地说,我想使用用户可以订阅的频道,以便同时有效地将消息推送给几百人。 我不确定是否addEvent('channel_name',x)是要走的路。 我没有在文档中find任何东西。 有任何想法吗? 谢谢你

node.js + socket.IO – 套接字不重新连接?

我知道socket.io有一个内置的function,重新连接和一切,但我不认为这是工作 – 正如我从别人看到它也没有为他们工作。 如果用户把他们的计算机hibernate,它会断开连接,然后当他们打开备份时,他们不再连接,所以他们没有任何通知或任何东西,直到他们刷新页面。 也许这只是我做得不对的事情? var io = require('socket.io').listen(8080); var users = {}; ////////////////USER CONNECTED///// console.log("Sever is now running"); io.sockets.on('connection', function (socket) { //Tell the client that they are connected socket.emit('connected'); //Once the users session is recieved socket.on('session', function (session) { //Add users to users variable users[socket.id] = {userID:session, socketID:socket}; //When user disconnects socket.on('disconnect', function […]

Sails.js + socket.io:从服务器发送消息到客户端

我试图build立一个系统与sails.js让服务器广播消息到一组客户端。 基本上: A组中的客户端向服务器发送AJAX请求。 服务器处理请求并通过套接字将消息发送给B组的所有客户端。 B组的客户端通过套接字接收消息并显示。 根据socket.io文档,我应该能够让B组中的客户端join一个“房间”,然后让服务器广播到特定的房间,但在客户端,预先存在的“套接字”不有方法“socket.join('房间')”。 所以,我试着给所有的客户发送一个独特的事件: socket.on("connect", function(){ console.log("Client Connected"); }); socket.on("my_event", function(data){ console.log("my_event received"); }); 这可以通过在服务器端执行“sails.io.sockets.emit(”my_event“,{…})”来正常工作,但是这不是将事件发送到每个客户端吗? 我可以使事件名称是唯一的,就像“my_event_000”带有一个ID来指定组,但是这仍然会不必要地将事件发送到每个客户端。 我应该使用“房间”吗? 如果是的话,怎么样?

节点(套接字)实时audiostream/广播

请问,是否有任何简单的方法通过NODE.js和可能的SOCKET.IO从服务器到客户端(浏览器)stream媒体文件(ogg,mp3,spx ..)? 我必须在服务器端loggingaudioinput,然后能够为许多客户端实时播放。 我已经搞乱了binary.js或socket.iostream,但没有能够得到它的权利。 我试图用speex,vorbis或lame编码audioinput,然后通过FS将它加载到客户端,但是我没有成功。 或者我必须捕获PCM,然后在浏览器中解码? 对此的任何build议,没有任何我发现曾经帮助过我。 非常感谢任何提示,链接和想法。

Node.js:如何刷新套接字?

我想在发送下一个数据块之前刷新套接字: var net = require('net'); net.createServer(function(socket) { socket.on('data', function(data) { console.log(data.toString()); }); }).listen(54358, '127.0.0.1'); var socket = net.createConnection(54358, '127.0.0.1'); socket.setNoDelay(true); socket.write('mentos'); socket.write('cola'); 但是,尽pipe有setNoDelay选项,但是,这不起作用,例如打印“mentoscola”而不是“mentos \ ncola”。 我该如何解决?