Node.js Websockets Socket.IO
我无法启动客户端事件,请查看代码/说明: 好吧,我想我已经成功了 客户端代码:Node.js Websockets Socket.IO,node.js,websocket,Node.js,Websocket,我无法启动客户端事件,请查看代码/说明: 好吧,我想我已经成功了 客户端代码: <script src="./Socket.IO/socket.io.js"></script> <script> io.setPath('./Socket.IO/'); var socket = new io.Socket('jayz.danstanhope.webfactional.com', { 'port': 80 }); socket.on('
<script src="./Socket.IO/socket.io.js"></script>
<script>
io.setPath('./Socket.IO/');
var socket = new io.Socket('jayz.danstanhope.webfactional.com', { 'port': 80 });
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 sys = require("sys")
, fs = require("fs")
, path = require("path")
, http = require("http");
var io = require('/home/danstanhope/webapps/htdocs/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(26970);
server = io.listen(server);
server.on('connection', function(client){
sys.log('client connected');
});
当我在Chrome中刷新页面时,我可以看到正在Shell中编写日志
我看到的是:
danstanhope@web146 htdocs]$ node server.js
9 Aug 19:19:37 - socket.io ready - accepting connections
9 Aug 19:19:40 - Initializing client with transport "websocket"
9 Aug 19:19:40 - Client 21789167495444417 connected
9 Aug 19:19:40 - client connected
9 Aug 19:19:40 - Client 21789167495444417 disconnected
现在唯一的问题是如何触发这些javascript套接字警报
此外,Chrome中也显示了此错误:
Bad Upgrade header: Server: nginx
Date: Wed, 11 Aug 2010 23:06:06 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Upgrade: WebSocket
关于如何修复“坏标题”有什么想法吗
谢谢,Dan根本不知道WebSocket,但是在客户端代码中,您使用端口80初始化套接字,但告诉服务器在端口26970侦听。非常确定方法名称是“addEvent”,而不是“on”,尽管“on”肯定更像“node-y”: “从那时起 用于铬4和铬5, 响应标题必须以以下内容开头: HTTP/1.1 101 Web套接字协议握手 升级:WebSocket 连接:升级“
做了一个快速的谷歌搜索,这就是我想到的。到目前为止,从nginx机器上利用websockets是不可能的。这一点最近可能已经得到纠正,但我所有的研究都表明,nginx和Apache目前无法承载websockets。似乎大多数反向代理都不同意WebSocket
不久前,我遇到了完全相同的问题,问题最终由两个不同版本的socket.io引起。我使用npm导入了一个版本,然后在github上从另一个开发人员那里获得了客户端版本,但它们不兼容。仔细检查您是否无意中使用了其他人的fork。您可以使用nginx代理标准HTML请求,但不能代理websockets或flashsockets连接,因为nginx还不能通过代理转发非HTTP 1.0流量。 因此websockets是一个禁区,Flash将无法发送其跨域策略,因为它看起来有点像这样:
<policy-file-request/>\x00
\x00
哪个nginx很高兴地抛出了一个http400错误
为了使其正常工作,您必须将客户端连接到node.js应用程序正在侦听的端口:
<script src="./Socket.IO/socket.io.js"></script>
<script>
io.setPath('./Socket.IO/');
var socket = new io.Socket('jayz.danstanhope.webfactional.com', { 'port': 26970 });
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>
io.setPath('./Socket.io/');
var socket=new io.socket('jayz.danstanhope.webpartial.com',{'port':26970});
socket.on('connect',function(){
警报(“连接”);
});
socket.on('message',函数(msg){
警报(“消息”+msg);
});
socket.on('close',function(){
警报(“关闭”);
});
socket.on('disconnect',function(){
警报(“断开”);
});
socket.connect();
嘿,那是因为我正在将端口转发到26970。所以我认为这很好。无论如何还是要感谢:)非常感谢你的回复,但这并没有解决问题:(同一个问题,事件没有触发。
<script src="./Socket.IO/socket.io.js"></script>
<script>
io.setPath('./Socket.IO/');
var socket = new io.Socket('jayz.danstanhope.webfactional.com', { 'port': 26970 });
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>