1

今天我按照 Gonzalo Ayuso 在http://gonzalo123.com/2011/05/23/real-time-notifications-part-ii-now-with-node-js-and-socket-io/上的教程,但它可以'不发送消息 这是我的 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?

4

2 回答 2

0

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

于 2013-02-05T02:23:37.613 回答
0

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

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

这意味着,在您的 onclick 锚点上需要调用 socket.emit ...,或者调用一些函数,例如:

function call_my_event(name){

    socket.emit(name,{my : 'data'});
} 
于 2013-02-04T09:05:43.010 回答