socket.io没有传输到浏览器

时间:2013-06-07 11:32:00

标签: node.js express socket.io

我似乎有socket.io设置并试图发出一些推文,但它们没有出现在浏览器中。这就是我在控制台中获得的内容:

GET / 304 16ms
   debug - served static content /socket.io.js
   debug - client authorized
   info  - handshake authorized LYlpc7dcpLyHCFcKYUJy
   debug - setting request GET /socket.io/1/websocket/LYlpc7dcpLyHCFcKYUJy
   debug - set heartbeat interval for client LYlpc7dcpLyHCFcKYUJy
   debug - client authorized for 
   debug - websocket writing 1::
   debug - websocket writing 5:::{"name":"tweets","args":[{"user":"AaronNewport97","text":"You're not your","latitude":51.56764399,"longitude":0.49722754}]}
51.56764399 0.49722754

以下是app.js的相关代码:

if(data.geo!=null){
        latitude = data.geo.coordinates[0];
        longitude = data.geo.coordinates[1];

   io.sockets.volatile.emit('tweets', {
        user: data.user.screen_name,
        text: data.text,
        latitude: latitude,
        longitude: longitude
    });
}   

这就是我在HTML方面所拥有的:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io.connect();
    jQuery(function ($) {
        var tweetList = $('ul.tweets');
        socket.on('tweet', function (data) {
            tweetList .prepend('<li>' + data.user + ': ' + data.text + '</li>'); 
        }); 
    });
</script>

在broswer控制台中,我得到了:

Request URL:ws://localhost:3000/socket.io/1/websocket/vBFWuusMIQbO9PeJZv8p
Request Method:GET
Status Code:101 Switching Protocols

看起来连接正在等待中。为什么要这样做?

2 个答案:

答案 0 :(得分:3)

您发送的邮件名为tweets,但您的浏览器正在等待名为tweet的邮件(不包含-s)。

答案 1 :(得分:0)

更改此行

io.sockets.volatile.emit('tweets', {

这个

socket.volatile.emit('tweet', {