我的聊天应用程序在本地服务器上正常运行,但当我将其推送到openshift服务器时,聊天功能无效。
我正在关注此示例:http://socket.io/get-started/chat/
以下是我的HTML代码
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
$('form').submit(function () {
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function (msg) {
$('#messages').append($('<li>').text(msg));
});
</script>
</body>
下面是我的server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var ipaddress = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
var port = process.env.OPENSHIFT_NODEJS_PORT || 3000;
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
socket.on('chat message', function (msg) {
io.emit('chat message', msg);
});
});
http.listen(port, function () {
console.log('listening');
});
相同的代码在我的本地服务器上正常工作。现在我只是广播包括发件人在内的邮件。
我哪里错了?
答案 0 :(得分:1)
$( document ).ready(function() {});
这段代码救了我。我忘了将我的脚本放在jquery文件中。所以最终的代码看起来像这样。
$( document ).ready(function() {
var socket = io();
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
});
答案 1 :(得分:0)
您的聊天客户端需要连接到端口8000上的websocket聊天服务器以获取ws(或8443 for wss)。确保在连接时指定该端口号。
答案 2 :(得分:0)
我知道它有点晚了,但文件还没有准备好,导致错误。 试试这段代码:
$( document ).ready(function() {
var socket = io();
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
});