Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Websockets Socket.IO_Node.js_Websocket - Fatal编程技术网

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>