index.jsを介さないSocket.emitが
var app = require('express')();
var path = require('path');
var server = require('http').Server(app);
var io = require('socket.io')(server);
var users = [];
connections = [];
server.listen(process.env.PORT || 3000);
app.use(require('express').static(path.join(__dirname)));
console.log('server running');
app.get('/', function(req, res){
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
var addedUser = false;
socket.on('new post', function(post){
console.log(post);
socket.emit('posted', data);
});
});
client.js
$(function(){
function submit(){
socket.emit('new post', $("#text").val());
console.log("submitted");
}
function addPost(data){
console.log(2);
var $post = $('<p></p>').text(data);
console.log($post);
$("#posts").append($post);
}
$("#submit").on("click", function(){
submit();
});
socket.on('posted', function(data){
console.log(1);
addPost(data);
});
});
index.htmlを
<html>
<head>
<title>title</title>
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<input type="text" id="text">Input</input>
<button id="submit">Submit</button>
<script src="client.js"></script>
<br>
<br>
<br>
<div id="posts"></div>
<script>
var socket = io();
</script>
</body>
</html>
サーバー、t彼はコンソールのログ "サーバーの実行"をうまくコンソール。私は何かをする投稿ポストボタンを得ることができません。デバッグコンソールのメッセージは表示されず、何も起こりません。送信ボタンをクリックしたときに「新しいポスト」を発することになったが、何も
あなたのサーバーで実行しているsocket.ioのバージョンは何ですか?あなたはサーバー上で 'connection'イベントを取得していますか?クライアントを設定するためにclient.jsのコードが呼び出されていますか? – jfriend00
4.1.2、接続イベントが発生しました。 io.on( 'connection')の後にコンソールログを置いて実行します。あなたの3番目の質問のために、送信ボタンが何かをしたらどういう意味ですか?もしそうなら、そうする。関数submit()が実行され、クライアントコンソールに "submitted"が記録されます –
4.1.2がsocket.ioバージョンだとは思わないので、そのことは分かりません。 socket.io 2.0が最近リリースされました。私はあなたがクライアントとサーバー上で一致するsocket.ioバージョンを持っているかどうかを判断しようとしています。メッセージが機能しない理由があります。 ''をこの ''バージョンが一致しない場合に備えて、サーバから一致するsocket.ioクライアントバージョンをロードします。 – jfriend00