Tag: 套接字

在Java中创build一个实时协作记事本

背景:我想创build一个记事本类似的应用程序,其中多个人可以编辑一个文件/记事本。 我已经创build了graphics界面,现在想开始研究它的多用户协作部分。 问题:如何从一个客户端的文本框中获取文本以转到另一个客户端的文本框。 我会使用套接字吗? 我将在哪里存储将与所有客户共享的文本? 我将不得不使用/做什么来创build一个function齐全的实时协作文本框。 这是一个很好的起点,我可以从中研究? 例如:Etherpad.com / Titanpad.com / Piratepad.com或Docs.Google.com(除了我想创build一个桌面应用程序,而不是一个网站) 解决在答案中出现的一些问题: 用户如何select他们想要编辑的文档:是的 用户如何创build新文档:通过在主菜单中select新文件选项 如果许多用户试图一次编辑同一个文档,会发生什么? :他们都被允许编辑文件。 用户是否需要点击“保存”button才能反映更改? 否,变更应同时反映 用户是否需要login? :是的 任何人都可以编辑任何文件,或有访问限制吗? :有限制,即。 文档的创build者可以阻止用户编辑文档..

在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议,没有任何我发现曾经帮助过我。 非常感谢任何提示,链接和想法。