我正在尝试将数据从我的浏览器 (Chrome) 推送到 nodejs 服务器,但遇到了可怕的麻烦。
基本上,我已经在浏览器中看到了这段代码:
<script src="./Socket.IO/socket.io.js"></script>
<script>
io.setPath('./Socket.IO/');
var socket=new io.Socket('xxx.xxx.xxx.xxx');
socket.on('connect',function(){
alert('connect');
});
socket.on('message',function(msg){
alert('message'+msg);
});
socket.on('close',function(){
alert('close');
});
socket.on('disconnect',function(){
alert('disconnect');
});
socket.connect();
</script>
唯一出现的警报是“关闭”警报。
这是我的服务器代码:
var http=require('http');
var io=require('./Socket.IO-node');
var server=http.createServer(function(req, res){
// your normal server code
res.writeHeader(200, {'Content-Type': 'text/html'});
res.writeBody('<h1>Hello world</h1>');
res.finish();
});
var socket=io.listen(server,{transports:websocket,port:8080});
socket.on('connection',function(client){
console.log('connection');
});
您可以看到我正在尝试记录与控制台的连接,但没有任何显示。我一直在谷歌上搜索并尝试通过 http://github.com/LearnBoost/Socket.IO-node 上的 Socket.IO 示例工作。似乎没有什么对我有用...
非常感谢任何指针。
编辑: 你好,
我现在有以下服务器代码:
var http=require('http');
var io=require('./Socket.IO-node');
var server=http.createServer(function(req, res){
//your normal server code
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('Hello world');
res.end();
});
server.listen(8124);
server=io.listen(server);
server.on('connection', function(client){
console.log('EOH connected');
sys.log('EOH connected');
});
server.on('clientConnect',function(client){
console.log('EOH connected');
sys.log('EOH connected');
});
server.on('clientDisconnect',function(client){
console.log('EOH disconnected');
sys.log('EOH disconnected');
});
以及以下客户端代码:
<script>
window.onload=function(){
io.setPath('./Socket.IO/');
socket = new io.Socket('localhost', {'port': 8124});
socket.connect();
socket.send('xxx');
}
</script>
当我在 localhost:8124 加载客户端代码时,我预计会触发某种“clientConnect”事件。我还在套接字对象上发送数据,但服务器上什么也没有出现……完全难住了。现在正在考虑使用 node-websocket-server (http://github.com/miksago/node-websocket-server)。
解决方案:git clone git://github.com/LearnBoost/Socket.IO.git --recursive
使用 --recursive 标志。呵呵!
最佳答案
这是一个 Chrome 问题:Node.js, WebSocket Location Issue?
关于node.js - Nodejs 和网络套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3389637/
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
s=Socket.new(Socket::AF_INET,Socket::SOCK_STREAM,0)s.connect(Socket.pack_sockaddr_in('port','hostname'))ssl=OpenSSL::SSL::SSLSocket.new(s,sslcert)ssl.connect从这里开始,如果ssl连接和底层套接字仍然是ESTABLISHED,或者它是否在默认值7200之后进入CLOSE_WAIT,我想检查一个线程几秒钟甚至更糟的是在实际上不需要.write()或.read()的情况下关闭。是用select()、IO.select()还是其他方法完成
一段时间以来,我一直在使用open_uri下拉ftp路径作为数据源,但突然发现我几乎连续不断地收到“530抱歉,允许的最大客户端数(95)已经连接。”我不确定我的代码是否有问题,或者是否是其他人在访问服务器,不幸的是,我无法真正确定谁有问题。本质上,我正在读取FTPURI:defself.read_uri(uri)beginuri=open(uri).readuri=="Error"?nil:urirescueOpenURI::HTTPErrornilendend我猜我需要在这里添加一些额外的错误处理代码...我想确保我采取一切预防措施来关闭所有连接,这样我的连接就不是问题所在,但是我
我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d
是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案
我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT
我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1
rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:
我有一个包含多个组件的存储库,其中大部分是用JavaScript(Node.js)编写的,一个是用Ruby(RubyonRails)编写的。我想要一个.travis.yml文件来触发一个运行每个组件的所有测试的构建。根据thisTravisCIGoogleGroupthread,目前还没有官方支持。我的目录结构是这样的:.├──构建服务器├──核心├──扩展├──网络应用├──流浪文件├──package.json├──.travis.yml└──生成文件我希望能够运行特定版本的Ruby(2.2.2)和Node.js(0.12.2)。我已经有了一个make目标,所以maketest在每