当前位置: 首页 > 知识库问答 >
问题:

Socket.io客户端无法发出消息

空夕
2023-03-14

服务器:

var 
io=require('socket.io'),
express=require('express'),
UUID=require('node-uuid'),
path=require('path'),
app = express();

app.configure(function(){
    app.use(express.static(path.join(__dirname,'')));
});

var server = require('http').createServer(app).listen(8080);
sio = io.listen(server);

app.get('/', function(req, res){
    res.sendfile('/index.html', {root:__dirname});
});

sio.sockets.on('connection', function(socket){
    socket.userid = UUID();
    socket.on('message', function(){
        console.log('client just sent something');
        socket.emit('news', { hello: 'world' });
    });
});
<html>
<head>
    <script src="/socket.io/socket.io.js"></script>
    <script type="text/javascript" src="game.room.js"></script>
    <script type="text/javascript" src="client.js"></script>
</head>
</html>
window.onload = function(){
    var game = new game_room();
}
var game_room = function(){
    this.socket = io.connect();

this.socket.on('connect', function(){
    this.socket.emit('message', 'Hello server');
});
}

共有1个答案

司马建柏
2023-03-14

您正在丢失可以尝试绑定的上下文:

var game_room = function(){
    this.socket = io.connect();


    this.socket.on('connect', function(){
        this.socket.emit('message', 'Hello server');
    }.bind(this));
}

或者您可以将this.socket设置为某个本地var:

var game_room = function(){
    var socket = this.socket = io.connect();


    this.socket.on('connect', function(){
        socket.emit('message', 'Hello server');
    });
}
 类似资料:
  • 当我提交表单时,我在浏览器控制台中看到“emit”消息,所以我知道表单提交事件正在触发,但我没有在服务器上收到测试消息。客户端或服务器端似乎什么也没发生,“socket.emit”函数似乎什么也没做。 我做错了什么?

  • 在文档的socket.io客户端套接字部分http://socket.io/docs/client-api/#io#socket指的是套接字文档,这意味着服务器套接字对象和客户端套接字对象是相同的。

  • 编辑:我设法把我的问题简化成一些非常简单的事情: 这段代码没问题: 这段代码断开了客户端的连接!:

  • 问题内容: 向所有客户端发送消息效果很好,但是我想向特定的用户名发送消息。我的server.js文件看起来像。它的作用是在运行时,客户端代码将用户添加到对象用户名以及套接字对象中。并立即将单个消息返回给每个连接的客户端。 发出消息的部分 问题答案: 试试这个: socket.id由socket.io保存,并且包含客户端的唯一ID。您可以使用以下命令进行检查:

  • 问题内容: 是否有适用于Java的Socket.IO客户端?到目前为止,我只找到了仅适用于JavaScript的官方Socket.IO客户端和仅作为服务器的socket.io- java。 问题答案: 目前的选项有限: http://code.google.com/p/weberknecht/ https://github.com/TooTallNate/Java-WebSocket https:

  • Socket.IO 的开源 iOS 客户端,使用 swift 编写。 演示视频:http://fat.gfycat.com/EssentialBlueElectriceel.webm 使用示例: import Foundationlet socket = SocketIOClient(socketURL: "localhost:8880")socket.on("important message"