草庐IT

Socket聊天

全部标签

ruby - 编写一个简单的 IRC(互联网中继聊天)客户端

我很小的时候就开始使用IRC,我一直对它着迷。作为语言练习,我正在考虑用Ruby编写一个简单的IRC客户端Shoes作为图形前端。先生们,我的问题是,要开始这次伟大的冒险,我需要熟悉什么(当然除了鞋子和Ruby之外)?我想在IRC协议(protocol)上有某种规范。有什么指点吗? 最佳答案 之前的一篇文章提到了RFC1459。虽然这是对IRC的一个很好的介绍,但它实际上已被RFC2810-2813取代。这是一个更完整的文档列表,您需要编写任何与IRC相关的程序:RFC1459(原始RFC;已被取代,但仍然有用)RFC2810(IR

多线程问题:为什么不应该使用多线程读写同一个socket连接?

问题的产生经典的单reactor多线程模式采用的是用主线程处理连接事件以及socket读写事件,业务逻辑的处理则是让线程池里的线程各自竞争处理。既然多线程这么方便,为什么不让线程池里的线程也参与到read和send这个过程中呢?在发送数据的过程中,即使TCP的发送缓存满了,我们也可以记录下当前成功发送了多少字节,然后再次注册一个EPOLLOUT事件,只需等待下次可写事件,继续让子线程发送数据即可,岂不是美哉?解释陈硕大佬的解释对于TCP,通常多线程读写同一个socket是错误的设计,因为有shortwrite的可能。假如你加锁,而又发生shortwrite,你是不是要一直等到整条消息发送完才解

ruby-on-rails - postgresql 数据库错误 : Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

当我运行rakedb:migrate或运行railss命令时,我得到同样的错误:Error:couldnotconnecttoserver:NosuchfileordirectoryIstheserverrunninglocallyandacceptingconnectionsonUnixdomainsocket"/var/run/postgresql/.s.PGSQL.5432"?当我尝试railss时,浏览器出现错误。这是我的database.ymldefault:&defaultadapter:postgresqlencoding:unicodepool:5development

ruby-on-rails - 为什么我会出现间歇性的 Excon::Error::Socket: getaddrinfo: No address associated with hostname (SocketError)?

Rails4-Ruby2.2.2-亚马逊AWSS3-蜻蜓1.0.12-dragonfly-s3_data_store1.2-fog-aws0.10.0大约99%的时间我们没有问题。这个问题通常只发生在使用率很高的时候,但我注意到它也发生在几乎没有用户的时候。抛出错误的行:#excon/lib/excon/socket.rb#line100insidetheconnectionmethod.addrinfo=::Socket.getaddrinfo(*args)该错误在应用程序中无处不在。有时在没有远程连接时会出现错误。-我无法再验证这一点。我使用Rails记录器来捕获传入的参数,通过和

javascript - 如何减少聊天​​的 AJAX 请求数量?

我的网站上有一个聊天功能,它需要向我的服务器发送许多AJAX请求(每秒至少2次)以检查是否有新消息。有没有办法减少请求的数量和仅在发布后才重新加载消息?我知道不可能使用套接字(因为我不能使用flash、java或HTML5的功能),但也许有一些技巧处理HTTP1.1的keepalive选项? 最佳答案 是的,有一种简单的方法可以做到这一点。实际上,您所做的是将ajax调用的超时时间增加到较长的超时时间(比如5分钟)。您的服务器接收请求然后保留它,偶尔检查新的响应。然后,当需要新的响应时,它只是响应请求,您的客户端会收到更新。如果5分

javascript - 使用 phonegap 创建移动聊天应用程序 - 最佳策略?

我是否创建了一个计时器来每隔一段时间发出ajax请求以检查新消息?这似乎会消耗大量手机资源。创建简单的PhoneGap即时消息/聊天应用程序的最佳方法是什么?对于移动设备,HTTP流式传输是否可行?如果连接中断怎么办?它适用于3G吗?显然这是一个大问题,但我们将不胜感激。 最佳答案 这个问题的范围有点高,很多内容会进入“总答案”。这取决于您使用的是什么,但您是否考虑过使用node.js和websockets?我知道还有其他方法可以做服务器端websockets但这是一种流行的方法。如果您不熟悉网络套接字,它是一种新的HTML5技术,

javascript - 在 SO 聊天中播放提示音

我正在尝试使用Chrome扩展程序在SO聊天中播放通知提示音(或提及提示音),但我无法正确播放(如果可能的话)。我尝试了以下代码:this.notify=function(){$("#jplayer").jPlayer('play',0);}但是我得到以下错误:UncaughtTypeError:Object[objectObject]hasnomethod'jPlayer'有没有办法使用SO聊天声音“模块”/播放器来播放@mention提示音?更新我知道我可以设置自己的“音频播放器”,但我想使用SO上聊天中使用的音频播放器,并且我想使用通知提示音。我已经在GitHubgist中上传了

javascript - 聊天使用什么协议(protocol)? webRTC 或 Websockets

我正在创建一个可以进行视频、音频和文本聊天的聊天网站。我目前正在使用Websockets进行文本聊天。我需要知道视频、音频和文本聊天的最佳方式是什么。哪个更有效。我应该为所有这些使用Websockets,还是为视频和音频使用webRTC,为文本聊天使用Websockets。我可以两者都做,并且不想为webRTC重新编写我的文本聊天,但如果这是一个更好的选择,那么我会的。编辑:我刚刚发现了binaryJS,它是webRTC更好更简单的替代品吗?谢谢,@_C1D 最佳答案 通过将您的视频和音频流嵌入到websockets中,您将拥有一个

javascript - chrome 扩展在后台页面和内容脚本下使用相同的 socket.io 连接

我正在使用socket.io做一个chrome扩展,我有一个内容脚本可以保持连接到服务器以进行实时聊天,但我也想在后台页面中从服务器获取一些信息。它像这样分开工作很好在内容脚本中varsocket=io.connect('http://localhost:3700');socket.on('dosomething',function(){console.log("test");});在后台页面varsocket=io.connect('http://localhost:3700');socket.on('dosomething',function(){console.log("test

javascript - socket.io 客户端 : how to determine if a handler is already installed

如果您为套接字上的同一个函数多次调用“on”方法会发生什么?多次调用它是简单地覆盖了最后注册的函数还是使用了更多资源?如果是后者,那么如何判断handler是否已经注册? 最佳答案 我刚刚查看了Firebug中的套接字,有一个名为“_callbacks”的成员。它包含所有已注册的回调,因此检测是否已注册非常简单:if(socket._callbacks[strHandlerName]==undefined){//Handlernotpresent,installnowsocket.on(strHandlerName,function