在Chrome和Firefox上,Socket.io无法向Node服务器发送消息
我试图找出我的代码/设置有什么问题now.Basically我想发送一个消息从客户端到服务器。 除 FF(11)和chrome(18.0.1025.152 m) 以外 ,以下所有浏览器都可以使用 。
这里是一些信息:
- 我在Windows 7企业版64位机器上运行Node.js
- 我使用Apache来从本地主机提供页面
- 我用socket.io在端口8080上监听
- 它看起来像铬和FF后备到xhr轮询/ jsonp轮询,而不是使用套接字
- 我可以从服务器推送消息,但是我不能从客户端发出消息
服务器代码:
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以进行套接字连接…
尝试使用另一个端口?