![](/img/trans.png)
[英]socket.io in node.js: socket.emit doesn't complete before socket.disconnect
[英]Node.js, express and socket.io : socket.on doesn't receive message socket.emit from the server to the client
此功能在我的应用中不起作用。 我无法 从服务器发送到客户端 (socket.on) 的消息 (socket.emit)。 但是我没有相反的问题(客户端到服务器)。
我使用cloud9,他们的聊天示例效果很好。 这是我的服务器代码:
var http = require('http');
var path = require('path');
var async = require('async');
var socketio = require('socket.io');
var express = require('express');
var router = express();
var server = http.createServer(router);
var io = socketio.listen(server);
router.use(express.static(path.resolve(__dirname, 'client2')));
io.on('connection', function (socket) {
socket.emit('hello', 'i changed'); // !!!
});
server.listen(process.env.PORT || 3000, process.env.IP || "0.0.0.0", function(){
var addr = server.address();
console.log("Chat server listening at", addr.address + ":" + addr.port);
});
以及html页面的代码:
<html>
<head>
<title>test</title>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect();
socket.on('hello', function (msg) { // !!!
document.innerHTML = msg;
});
</script>
</head>
<body>
<p>normal page</p>
</body>
</html>
而且没有变化...编辑:要么与console.log。 但是消息似乎是通过套接字发送的:
Debugger listening on port 15454
info - socket.io started
Chat server listening at 0.0.0.0:8080
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized 13XpSYGuXzMpMeyFsRfO
debug - setting request GET /socket.io/1/websocket/13XpSYGuXzMpMeyFsRfO
debug - set heartbeat interval for client 13XpSYGuXzMpMeyFsRfO
debug - client authorized for
debug - websocket writing 1::
debug - websocket writing 5:::{"name":"hello","args":["i changed"]}
你能帮我吗 ?
你需要改变
var socket = io.connect();
通过
var socket = io.connect('http://0.0.0.0:8080');
var socket = io.connect()<-这应该指定您要连接的域。
所以我做了很多工作,试图让它正常工作,但我却不像您那样工作,我是一个初学者,与您的编码方式不兼容,但我发现问题出在io正在使用的端口
var io = socketio.listen(server);
或html获取连接的位置
<script src="/socket.io/socket.io.js"></script>
对我来说,HTML在其自己的目录中请求一个js文件,但事实并非如此。
当我使用socket.io时,我将其放入服务器中
var client = require("socket.io").listen(8080).sockets
主要部分是监听,它监听端口8080,在我的html中,
var socket = io.connect("http://127.0.0.1:8080");
哪个可行,对此我很抱歉,我基本上可以确定这不是一个答案,但是我已经尝试过,即使一年零三个月过去了,我也希望您能成功。
$(function(){
var socket = io();
socket.on('hello',function(data){
$('#lblmsg').text(data.message);
});
});
这是我正在处理的东西。 在我的代码的第4行中,传递了数据并检索了data.message。 但您在html页面上直接将msg与innerhtml等效(在注释的代码中!!!!!)
看看您是否还在努力!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.