在Chrome和Firefox上,Socket.io无法向Node服务器发送消息

我试图找出我的代码/设置有什么问题now.Basically我想发送一个消息从客户端到服务器。 FF(11)和chrome(18.0.1025.152 m) 以外 ,以下所有浏览器都可以使用

这里是一些信息:

  1. 我在Windows 7企业版64位机器上运行Node.js
  2. 我使用Apache来从本地主机提供页面
  3. 我用socket.io在端口8080上监听
  4. 它看起来像铬和FF后备到xhr轮询/ jsonp轮询,而不是使用套接字
  5. 我可以从服务器推送消息,但是我不能从客户端发出消息

服务器代码:

var io = require('C:/Users/shlomis/node_modules/socket.io/lib/socket.io').listen(8080); io.sockets.on('connection', function (socket) { socket.on('my event', function (msg) { console.log("DATA!!!"); }); }); 

我找不到一个完整path的方法

客户代码:

 <!DOCTYPE html> <html lang="en"> <head> <title>Hello World!</title> <meta charset="utf-8"> <script src="http://localhost:8080/socket.io/socket.io.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ var socket = io.connect('http://localhost:8080'); $("#button").click(function() { socket.emit('my event' ,"Hello World!"); }) }) </script> </head> <body> <button type="button" id='button'>Send Message</button> </body> </html> 

模块版本:

 C:\Users\shlomis>npm ls mukhin_chat@0.0.1 C:\Users\shlomis ├─┬ express@2.5.9 │ ├─┬ connect@1.8.6 │ │ └── formidable@1.0.9 │ ├── mime@1.2.4 │ ├── mkdirp@0.3.0 │ └── qs@0.4.2 └─┬ socket.io@0.9.5 ├── policyfile@0.0.4 ├── redis@0.6.7 └─┬ socket.io-client@0.9.5 ├─┬ active-x-obfuscator@0.0.1 │ └── zeparser@0.0.5 ├── uglify-js@1.2.5 ├─┬ ws@0.4.12 │ ├── commander@0.5.2 │ └── options@0.0.3 └── xmlhttprequest@1.2.2 

节点日志:

 C:\Users\shlomis>node C:\dev\wamp\www\AR\js\videoServer.js info - socket.io started debug - served static content /socket.io.js debug - client authorized info - handshake authorized 17502185141066845391 debug - setting request GET /socket.io/1/websocket/17502185141066845391 debug - set heartbeat interval for client 17502185141066845391 debug - client authorized for debug - websocket writing 1:: debug - setting request GET /socket.io/1/xhr-polling/17502185141066845391?t=1334041653716 debug - setting poll timeout debug - discarding transport debug - cleared heartbeat interval for client 17502185141066845391 

铬WS请求(101交换协议): 在这里输入图像描述

铬XHR请求: 在这里输入图像描述

更新: Iv'e补充说

 socket.on('connect', function () { console.log("connected"); }); 

它永远不会闪光铬。

那么有什么可能是错的? 请帮帮忙:)

我相信你使用错误的socket.io.js文件的客户端?

https://github.com/LearnBoost/socket.io-client/tree/master/dist

你应该在你有你的客户端的东西的文件夹中使用这些文件,即: ../js/socket.io.min.js

关于需求问题,你使用npm吗? 进入nodeJS项目文件夹并运行以下命令:

npm install socket.io

这应该安装到您的项目文件夹中的node_modules文件夹,并通过执行require('socket.io'); 你应该可以访问该模块。

如果这不起作用,你可能有一个腐败的节点安装。

PS:你使用相同的端口的文件? 你似乎在端口8080上查找socket.io文件,然后连接到端口8080上的nodeJS以进行套接字连接…

尝试使用另一个端口?