NodeJS和socket.io无法发送消息

时间:2013-01-30 16:42:56

标签: node.js socket.io

今天我在http://gonzalo123.com/2011/05/23/real-time-notifications-part-ii-now-with-node-js-and-socket-io/遵循Gonzalo Ayuso的教程,但无法发送消息 这是我的server.js

var http = require('http');
var io = require('socket.io');

server = http.createServer(function(req, res){
});
server.listen(8000);

//socket.io
var socket = io.listen(server);
socket.set('transports', ['websocket']);

console.log("Start");
socket.on('connection', function(client){
      client.on('message', function(msg){
          console.log(msg);
          socket.broadcast(msg);
      })
    });

和client.html

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Comet Test</title>
    </head>
    <body>
        <p><a id='customAlert' href="#" onclick='socket.send("customAlert")'>publish customAlert</a></p>
        <p><a id='customAlert2' href="#" onclick='socket.send("customAlert2")'>publish customAlert2</a></p>
        <script src="http://localhost:8000/socket.io/socket.io.js" type="text/javascript"></script>
        <script type="text/javascript">
// Start the socket
var socket = io.connect('http://localhost:8000');

socket.on('message', function(msg){
    console.log(msg);
});
        </script>
    </body>
</html>

我在服务器上运行了一点点编辑。但是客户端不向服务器发送消息。有谁能够帮我?抱歉我的英语不好。

我发现客户端无法连接到服务器,但我不知道为什么?

我的计算机正在使用apache服务器运行xampp。也许这是问题?

更新: 我刚刚将传输设置为xhr-polling并连接成功。为什么不接受websocket?

2 个答案:

答案 0 :(得分:0)

您需要更仔细地阅读有关socket.io的教程 首先要调用一些事件,你需要发出事件名称:

socket.emit('my other event', { my: 'data' });

这意味着,你的onclick in anchor需要调用socket.emit ...,或者调用一些函数,如:

function call_my_event(name){

    socket.emit(name,{my : 'data'});
} 

答案 1 :(得分:0)

我发现了我的问题。这是关于我的计算机块websocket协议中的防火墙或代理或其他东西。我在另一台计算机上测试了该代码并且工作正常。所以我必须重新安装我的系统并且websocket可供我使用:D