此功能在我的应用中无效。 我无法从服务器向客户端(socket.on)收到消息(socket.emit)。 但我不会在逆向(客户端到服务器)中遇到此问题。
我使用cloud9,他们的聊天示例运行正常。 这是我的服务器代码:
stack.yaml
和html页面的代码:
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);
});
没有变化...... 编辑:使用console.log。 但是消息似乎是通过套接字发送的:
<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>
你能帮帮我吗?
答案 0 :(得分:0)
您需要更改
var socket = io.connect();
通过
var socket = io.connect('http://0.0.0.0:8080');
答案 1 :(得分:0)
var socket = io.connect()&lt; - 这应指定您要连接的域。
答案 2 :(得分:0)
$(function(){
var socket = io();
socket.on('hello',function(data){
$('#lblmsg').text(data.message);
});
});
这是我正在使用的东西。在我的代码的第4行中,传递了数据并检索了data.message。但您在html页面上直接将msg与innerhtml等效(在您注释了\ !!!的代码段中)
看看您是否还在努力!
答案 3 :(得分:-1)
所以我在这方面做了很多,试图让它发挥作用,它确实没有,但我不像你那样工作,我是初学者,与你的编码方式不兼容,但我是我发现问题是io正在使用的端口
var io = socketio.listen(server);
或html获取连接的地方
<script src="/socket.io/socket.io.js"></script>
对我而言,html正在请求其自己的ds中的js文件,但它不应该。
当我使用socket.io时,我把它放在服务器
中var client = require("socket.io").listen(8080).sockets
主要部分是listen,它在端口8080上侦听,在我的html中侦听
var socket = io.connect("http://127.0.0.1:8080");
哪有效,对此我很抱歉,我很肯定这不是一个答案,但我已经尝试过,我希望你能完成它,即使一年零三个月已经完成过去了。